Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Öne çıkan mesajlar

Mesaj tarihi:
Öncelikle db'nin sqlite olduğunu belirteyim.

Şimdi diyelimki elimizde 3 table var,
1. personalInfo // burda personID, firstName, lastName vs. var
2. refs // burda referenceID, firstName, lastName vs var
3. references_person_link // burda da personID ile referenceID var linklemek için (1 kişinin birden fazla referansı olabiliyor)

Şimdi istediğim şey personalInfodan sadece personID'yi alıp (her personID için) refs tablosundan o personID ile bağlantılı olan referansları almak(isim, soyisim, numara falan tablodaki herşey).
30 çeşit join olunca kafam baya bi karıştı.
He bir de references_person_link tablosunun parentTable'ı personalInfo, childKey'i ReferenceID, parentKey'i de personID olarak yapmışım zamanında, yanlış da olabilir siz mantığı anladınız hehe
Mesaj tarihi:
detayli bakamadim ama yanlis anlamadiysam istedigin bu


select * from personalInfo
left join references_person_link on personalInfo.personID = references_person_link.personID
left join refs on refs.referenceID = references_person_link.referenceID


istersen inner join de yapabilirsin ama diger tablolarda esi olmayan person bilgisi gelmez.
Mesaj tarihi:
select p.personID, r2.* from personalInfo p
left join references_person_link r1 on personalInfo.personID = references_person_link.personID
left join refs r2 on refs.referenceID = references_person_link.referenceID

Tekil bi kayıt için istiyosan, atıyorum personID'si 50 olan adam için, query'nin sonuna where p.personID = 50 yazarsın gg
Mesaj tarihi:
Kojiroh said:

select p.personID, r2.* from personalInfo p
left join references_person_link r1 on personalInfo.personID = references_person_link.personID
left join refs r2 on refs.referenceID = references_person_link.referenceID

Senin dediğin gibi yapınca no such a column personalInfo.personID dedi sonra aşağıdaki gibi değiştirince düzeldi ama bunun mantığını bi ara açıklaman lazım bana sfd

select p.personID, r2.* from personalInfo p
left join references_person_link r1 on p.personID = r1.personID
left join refs r2 on r2.referenceID = r1.referenceID
Mesaj tarihi:
Orda her seferinde adlarını uzun uzun yazmamak için tablolara alias veriyosun. "select * from personalInfo p..." olduktan sonra artık personalInfo.bilmemne değil de p.bilmemne yazıyosun kolonlarla ilgili bi şey yapacağın zaman.

Mesela ben kopi peyst yaparken ordaki personalInfo'yu unutmuşum o yüzden patlamış. p demek gerekiyodu onun yerine.

Select'ten sonraki ilk kısımda da (p.personID, r2.*) hangi kolonları seçmek istediğini belirtiyosun işte. r2'den yani refs'ten tüm kolonlar gelsin, p'den yani personalInfo'dan sadece personID'si gelsin
×
×
  • Yeni Oluştur...