lostyazilim
tr.link

SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi

2 Mesajlar 686 Okunma
lstbozum
tr.link

ontedi ontedi www.ontedi.com Kullanıcı
  • Üyelik 03.10.2013
  • Yaş/Cinsiyet 44 / E
  • Meslek Yazılım Uzmanı, Matematikçi
  • Konum Ankara
  • Ad Soyad S** T**
  • Mesajlar 1118
  • Beğeniler 325 / 324
  • Ticaret 2, (%100)
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: https://www.ontedi.com/sql/sql-serverda-stuff-fonksiyonuyla-birden-fazla-kaydi-tek-satirda-gosterme-islemi
berkaycatak

kişi bu mesajı beğendi.

www.ontedi.com
www.cizgi.site
wmaraci
reklam

ulas ulas C# & ASP.NET Kullanıcı
  • Üyelik 25.07.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Full Stack Developer
  • Konum Diğer
  • Ad Soyad U** K**
  • Mesajlar 1401
  • Beğeniler 404 / 404
  • Ticaret 18, (%100)
Bilgi paylaşımı için teşekkürler.
 

 

technovenue.com
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al