[]
SQL Sorgusu Sorusu
Merhaba sevgili sql expertleri,
kategoriler ve makaleler diye iki tane tablomuz olsun. Her kategoriye ait sadece bir tane makaleyi çeken sql sorgusu nasıl olmalı ?
kategoriler ve makaleler diye iki tane tablomuz olsun. Her kategoriye ait sadece bir tane makaleyi çeken sql sorgusu nasıl olmalı ?
soru daha anlaşılır olsa iyi olur. kategoriler ve makaleler tabloları birbirine ne ile bağlı? (foreign key ne yani) anladığım kadarı ile yazayım.
şimdi bir kategoride birden fazla makale olma durumuda var dolayısı ile sen nasıl çekmek istiyorsun bu makaleyi bir tane olarak anlayamadım. ama "top" komutunu kullanark o kategorideki ilk buldugu makaleyi getirebilirsin.bunun için:
(makaleler tablosunda kategorilerin ismine foreign key olduğunu varsaydım)
select top 1 * from makaleler where kategori_name = "(çekmek istediğin kategori ismini yaz)"
bu sorgu seçtiğin kategori isminde bulduğu ilk makaleyi getirir.
şimdi bir kategoride birden fazla makale olma durumuda var dolayısı ile sen nasıl çekmek istiyorsun bu makaleyi bir tane olarak anlayamadım. ama "top" komutunu kullanark o kategorideki ilk buldugu makaleyi getirebilirsin.bunun için:
(makaleler tablosunda kategorilerin ismine foreign key olduğunu varsaydım)
select top 1 * from makaleler where kategori_name = "(çekmek istediğin kategori ismini yaz)"
bu sorgu seçtiğin kategori isminde bulduğu ilk makaleyi getirir.
- yazik ziyan (29.06.12 20:25:17)
kategoriler tablosu
------------
kat_id
kat_adi
makeleler tablosu
-------
makale_id
makale_baslik
makale_icerik
makale_kategori
burdaki makale_kategori ile kat_id birbiri ile ilişkili.
kategorilerimiz: 1-fizik, 2-kimya, 3-biyoloji.
bu üç kategoriye ait 60 tane makale var diyelim. ben öyle bir sorgu yazmak istiyorum ki sadece üç* sonuç dönsün, ve bu üç sonucun da kategorileri farklı olsun.
------------
kat_id
kat_adi
makeleler tablosu
-------
makale_id
makale_baslik
makale_icerik
makale_kategori
burdaki makale_kategori ile kat_id birbiri ile ilişkili.
kategorilerimiz: 1-fizik, 2-kimya, 3-biyoloji.
bu üç kategoriye ait 60 tane makale var diyelim. ben öyle bir sorgu yazmak istiyorum ki sadece üç* sonuç dönsün, ve bu üç sonucun da kategorileri farklı olsun.
- gsgsgsgsgsgsgsgs (29.06.12 21:09:41)
SELECT k.*,m.*
FROM kategoriler k
INNER JOIN (
SELECT makale_kategori, MAX(makale_id) FROM makaleler GROUP BY makale_kategori
) MaxMakale ON k.kat_id = MaxMakale.makale_kategori
INNER JOIN makaleler m ON
MaxMakale.makale_id = m.makale.id and MaxMakale.makale_kategori=m.makale_kategori
FROM kategoriler k
INNER JOIN (
SELECT makale_kategori, MAX(makale_id) FROM makaleler GROUP BY makale_kategori
) MaxMakale ON k.kat_id = MaxMakale.makale_kategori
INNER JOIN makaleler m ON
MaxMakale.makale_id = m.makale.id and MaxMakale.makale_kategori=m.makale_kategori
- zfr38 (29.06.12 22:03:37)
ilgilendiğiniz için teşekkür ederim. Bu şekillderde yapamadım, stored procedure ile hallettim.
- gsgsgsgsgsgsgsgs (30.06.12 12:14:47)
1