Şimdi Ara

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

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
1.139
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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
    SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi


    İ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
    SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi


    Ş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ç
    SQL Server'da STUFF Fonksiyonuyla Birden Fazla Kaydı Tek Satırda Gösterme İşlemi


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







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.