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: https://www.ontedi.com/sql/sql-serverda-stuff-fonksiyonuyla-birden-fazla-kaydi-tek-satirda-gosterme-islemi