

İki Tablo Arasındaki Ortak Alanları Eşit Olan Kayıtları Listelemek
-
Veritabanında iki adet birbiriyle ilişkili tablo var.
Casting
id
isim
kategoricast_fotograflar
id
mankenid
fotograf
------------
"select cast_fotograflar.mankenid,cast_fotograflar.id,cast_fotograflar.fotograf,casting.id,casting.isim,casting.kategori from casting,cast_fotograflar where casting.id=cast_fotograflar.mankenid and kategori='bay'"
------------
Şeklinde cast_fotograflar tablosundaki mankenid ile casting tablosundaki id si eşit olan kayıtları listeliyorum.Yukarıdaki sorguda mankene ilişkin kaç adet fotograf varsa aynı mankeni o kadar tekrarlayarak listeliyor.Fakat bana listelerken sadece 1 tane fotograf alıp mankenin ismini yazması lazım.Tek kayıt tek fotograf şeklinde.
Bunu yapabilmek için nasıl bir sorgu yazmalıyım? -
select TOP 1 cast_fotograflar.mankenid,cast_fotograflar.id,cast_fotograflar.fotograf,casting.id,casting.isim,casting.kategori from casting,cast_fotograflar where casting.id=cast_fotograflar.mankenid and kategori='bay
Bu şekilde yazarsan sana ilk kayıdı getirecektir.
-
sanane bunu yazdı:
-----------------------------select TOP 1 cast_fotograflar.mankenid,cast_fotograflar.id,cast_fotograflar.fotograf,casting.id,casting.isim,casting.kategori from casting,cast_fotograflar where casting.id=cast_fotograflar.mankenid and kategori='bay
Bu şekilde yazarsan sana ilk kayıdı getirecektir.
-----------------------------
Sorguda hata var galiba çalışmadı. -
TOP 1 ifadesi varken listeleme yapmıyor.
Sorguyu şu şekilde yaparak sorunu çözdüm.
"select f.mankenid,f.id, f.fotograf,c.id,c.isim,c.kategori from casting c, cast_fotograflar f where c.id = f.mankenid and kategori = '$secim' and f.id in (select min(t.id) from cast_fotograflar t where c.id = t.mankenid)";
Yardımcı olan arkadaşa teşekkür ederim.