Şimdi Ara

SQL ÇOKLU TABLOLARDA VERİLERİN KATLANARAK ARTMASI

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
10
Cevap
0
Favori
1.030
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar 2den fazla tabloyu sql bağlantı kurduğumda 1*3*3=9 şeklinde katlanarak artan verileri 3 satır olarak görmek mümkün müdür. denemediğim yol kalmadı.
    Örnek:
    SELECT P.ADI,T.TEL, C.COCUK_ADI FROM PERSONEL P
    LEFT JOIN TELEFON T ON P.ID=T.PERSONELID
    LEFT JOIN COCUKLAR C ON P.ID=C.PERSONELID



     SQL ÇOKLU TABLOLARDA VERİLERİN KATLANARAK ARTMASI



  • demek istediğini tam olarak anlayamadım aslında.. biraz daha açıklar mısın? belki bi yardımım dokunur..
  • Yukarıdaki sorguyla 3 tabloyu birleştiriyorum. Ama sonuç görüldüğü gibi tekrarlanıyor. 3 satır yerine 9 satır geliyor. Benim istediğim sonuç aşağıdaki gibidir.

     SQL ÇOKLU TABLOLARDA VERİLERİN KATLANARAK ARTMASI
  • COCUKLAR tablosunda CEMIL personeli için 3 tane (MERT,CENK,AYSE) kayıt olduğu için

    CEMIL CEP:0532 000 00 11 MERT
    CEMIL CEP:0532 000 00 11 CENK

    bu ikisi (örnek olarak) farklı kayıtlar olarak gelecektir. Bana çoğalmıyor, doğru çalışıyor gibi geldi.

    İstediğiniz doğrultuda WHERE koşulu yazılabilir belki, ya da JOIN yapıyorken COCUKLAR ve TELEFON tablolarını bir şekilde bağlayabilirsiniz.

    Tabloları tam olarak bilemediğim için benim aklıma bunlar geldi. Umarım yanlış bir şey yazmamışımdır.
  • Evet dediğiniz gibi doğru çalışıyor (3 tel var onla bağlanınca 3 satır oluyor. 3 de çocuk var bunlarda bir önceki 3 satırla bağlanınca oluyor 9). Bu kurgu tamamen örnek aynı mantık da benim başka bir sorgum var. Sql tarafında istediğim gibi 3 satırda getirebilir miyim diye araştırıyorum.
  • TELEFON ve COCUKLAR tablolarını birbiriyle ilişkilendirmek lazım diye düşünüyorum.
    Yani

    CEP 0532 000 00 11 ile MERT
    CEP2 0532 000 00 12 ile CENK
    EV 0532 000 00 23 ile AYSE bir ID kolonu üzerinden ilişkilendirilmeli, MERT için CEP2 kaydı gelmeyecek şekilde tablolar düzenlenmeli.

    Bunun dışında yardım edebileceğim bir şey gelmiyor aklıma. Umarım çözebilirsiniz :)
  • SELECT P.ADI,T.TEL, C.COCUK_ADI FROM PERSONEL P ,telefon t,cocuklar c
    where
    P.ID=T.PERSONELID
    P.ID=C.PERSONELID
    T.PERSONELID=C.PERSONELID

    gibi de yapabilirsin ayrıca tabloların tam alanlarını yazman daha iyi olur.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: hakkikarahan

    SELECT P.ADI,T.TEL, C.COCUK_ADI FROM PERSONEL P ,telefon t,cocuklar c
    where
    P.ID=T.PERSONELID
    P.ID=C.PERSONELID
    T.PERSONELID=C.PERSONELID

    gibi de yapabilirsin ayrıca tabloların tam alanlarını yazman daha iyi olur.

    Değişen bir şey yok. Sonuç aynı ben bu konuyu bir arkadaşım lada konuştum. Burada yapacak bir şey yok PIVOT tablolarla yapılabilir dedi.
    Yani sadeleştirmeyi arka planda kodlarla (visual basic,C# ...) yapacağım.
    Not: Örnekteki telefon numaraları farklı 3 farklı numaradan oluşuyor. Gözden kaçıranlar için.
  • 2 tablo ile çözmen zor gibi bence ara tablo gerekebilir.
  • distinct ifadesi kullanmalısın

    SELECT DISTINCT P.ADI,T.TEL, C.COCUK_ADI FROM PERSONEL P
    LEFT JOIN TELEFON T ON P.ID=T.PERSONELID
    LEFT JOIN COCUKLAR C ON P.ID=C.PERSONELID
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.