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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
--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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
--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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
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.
