SQL Server’da ID Olmayan Tablo ile While Döngüsünün Kullanımı
Herkese merhaba,
Bu yazıda sizlere SQL Server’da ID olmayan tablo ile While döngüsünün kullanımından bahsedeceğim.
SQL Server’da bazı durumlarda tablolarda ID ya da sıra numarası gibi değerler olmayabilir. İşte bu gibi durumlarda tabloyu while döngüsü içine alıp kullanmak için aşağıdaki örnekten faydalanabilirsiniz. İlk olarak örnek bir tablo yapalım ve içine veri ekleyelim.
--Tablo Oluşturma
CREATE TABLE Calisanlar
(
Ad NVARCHAR(50),
Soyad NVARCHAR(50)
);
--Tabloya Veri Ekleme
INSERT INTO dbo.Calisanlar
(
Ad,
Soyad
)
VALUES
( N'Yavuz',
-- Ad - nvarchar(50)
N'Selim' -- Soyad - nvarchar(50)
),
( N'Hasan', -- Ad - nvarchar(50)
N'Mir' -- Soyad - nvarchar(50)
),
( N'Mehmet', -- Ad - nvarchar(50)
N'Surat' -- Soyad - nvarchar(50)
),
( N'Mahmut', -- Ad - nvarchar(50)
N'Konat' -- Soyad - nvarchar(50)
),
( N'Oğuz', -- Ad - nvarchar(50)
N'Biran' -- Soyad - nvarchar(50)
),
( N'Hami', -- Ad - nvarchar(50)
N'Gürgen' -- Soyad - nvarchar(50)
),
( N'Sami', -- Ad - nvarchar(50)
N'Yıldız' -- Soyad - nvarchar(50)
);
--Tabloyu Kontrol Etme
SELECT * FROM dbo.Calisanlar
Görüldüğü üzere tablo oluştu ve veriler içine eklendi.
Şimdi ise burada yapmamız gereken işlemlerden ilki tabloya sıra numarası vermek ve bu sıra numaralarının en küçük ve en büyük değerlerini çekmek.
Bu sayede tablomuzu bir döngü içine alarak istediğimiz değerleri ekran üzerinde gösterebiliriz.
Şimdi en küçük ve en büyük değerleri bulacağımız sorguyu yazalım.
--Tabloya sıra numarası verme
DECLARE @minimumsayi INT;
DECLARE @maksimumsayi INT;
SET @maksimumsayi =
(
SELECT MAX(Tablo.Sayi)
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY Ad) AS Sayi
FROM dbo.Calisanlar
) AS Tablo
);
SET @minimumsayi =
(
SELECT MIN(Tablo.Sayi)
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY Ad) AS Sayi
FROM dbo.Calisanlar
) AS Tablo
);
--En Küçük Sayı
PRINT @minimumsayi;
--En Büyük Sayı
PRINT @maksimumsayi;
Görüldüğü üzere en küçük ve en büyük numaraları ekrana bastırdık.
Şimdi ise while döngüsü içine sorgumuzu alarak her bir satırı ekranda gösterelim. Minimum ve maksimum değerlerin kullanımına dikkat edelim.
DECLARE @minimumsayi INT;
DECLARE @maksimumsayi INT;
SET @maksimumsayi =
(
SELECT MAX(Tablo.Sayi)
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY Ad) AS Sayi
FROM dbo.Calisanlar
) AS Tablo
);
SET @minimumsayi =
(
SELECT MIN(Tablo.Sayi)
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY Ad) AS Sayi
FROM dbo.Calisanlar
) AS Tablo
);
--PRINT @minimumsayi
--PRINT @maksimumsayi
WHILE (@minimumsayi <= @maksimumsayi)
BEGIN
SELECT *
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY Ad) AS Sayi
FROM dbo.Calisanlar
) AS Tablo
WHERE Tablo.Sayi = @minimumsayi;
SET @minimumsayi = @minimumsayi + 1;
END;
Görüldüğü üzere while ile her satır veri döndürülüp ekranda bastırıldı.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.