Veritabanı işlemleri yaparken bir kayda karşılık gelen birkaç farklı kaydı tek satırda göstermemiz gereken durumlar için kısa bir makale ile sizlerleyiz.
Elimizde şehirlerin ve ilçelerin olduğu iki tane tablo olduğunu düşünelim. Şehirler tablosunu inşaa edelim.
tblSehirler Tablosu
CREATE TABLE tblSehirler ( sehir_ID INT PRIMARY KEY NOT NULL IDENTITY(1,1) , sehir_adi VARCHAR(255) )
INSERT INTO tblSehirler (sehir_adi) VALUES ('Adana') INSERT INTO tblSehirler (sehir_adi) VALUES ('Adıyaman') INSERT INTO tblSehirler (sehir_adi) VALUES ('Afyon') INSERT INTO tblSehirler (sehir_adi) VALUES ('Ağrı') INSERT INTO tblSehirler (sehir_adi) VALUES ('Amasya') INSERT INTO tblSehirler (sehir_adi) VALUES ('Ankara')
Oluşan şehirler tablosunun görselini paylaşalım.
Şehirler Tablosu
İlçeleri de oluşturalım.
tblIlceler Tablosu
CREATE TABLE tblIlceler ( ilce_ID INT PRIMARY KEY NOT NULL IDENTITY(1,1) , sehir_ID INT, ilce_adi VARCHAR(255) )
INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (1, 'Seyhan') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (1, 'Ceyhan') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (1, 'Yüreğir') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (1, 'Sarıçam') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (1, 'Çukurova') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (2, 'Kahta') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (2, 'Gölbaşı') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (2, 'Gerger') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (3, 'Başmakçı') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (3, 'Bayat') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (3, 'Bolvadin') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (3, 'Dinar') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (4, 'Diyadin') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (4, 'Doğubayazıt') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (4, 'Patnos') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (5, 'Göynücek') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (5, 'Gümüşhacıköy') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (5, 'Hamamözü') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (6, 'Akyurt') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (6, 'Altındağ') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (6, 'Balâ') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (6, 'Keçiören') INSERT INTO tblIlceler (sehir_ID, ilce_adi) VALUES (6, 'Çankaya')
Oluşan ilçeler tablosunun görselini paylaşalım.
İlçeler Tablosu
Şimdi ise her şehire karşılık gelen tüm ilçeleri her şehirden tek kayıt gelecek şekilde yazalım.
STUFF Sorgusu
SELECT A.sehir_ID, A.sehir_adi AS Sehir, STUFF ( ( SELECT ', ' + ilce_adi FROM tblIlceler AS B WHERE A.sehir_ID = B.sehir_ID FOR XML PATH('') ), 1, 1, '' ) AS Ilceler FROM tblSehirler AS A
Kodlarımızın sonucuna ait görseli paylaşalım.
Sonuç
Bol sorgulu günler.
Kaynak:
SQL - SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi
SQL - SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi