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
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.
COCUKLAR tablosunda CEMIL personeli için 3 tane (MERT,CENK,AYSE) kayıt olduğu için
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.
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
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme