私はここで新しいです、そして私は私が一日中苦労している問題でいくらかの助けを大いに感謝します。
次の2つの表を検討してください。
albums (pkey: id) years (pkey: album_id, year)
id genre_id album_id year
--- -------- -------- ----
450 1 450 2000
451 1 450 2001
452 1 450 2002
453 2 451 2005
454 3 451 2012
452 1998
奇妙に思えるかもしれませんが、1つのアルバムが複数の年に関連付けられる可能性があると想定してください。
ジャンル1のすべてのアルバムを、それぞれのアルバムの最新年で並べ替えて選択したいと思います。(年でソートできると仮定します)。
だから、私はこの結果が欲しいです:
id year
----- ----
451 2012
450 2002
452 1998
これは私がいるところです...
明らかに、結果を注文する前にテーブルを結合する必要があります。
SELECT id, year
FROM albums INNER JOIN years ON albums.id = years.album_id
WHERE genre_id = 1
ORDER BY year;
これにより、ジャンル1の各アルバムの最新の年のレコードだけでなく、ジャンル1の各アルバムの毎年のレコードが選択されます。
どういうわけか、このようなサブクエリを組み込んで、アルバムテーブルに結合された年を、そのアルバムの最新の年のみに制限してから、もう一度並べ替える必要があります。
SELECT year FROM years WHERE album_id = ??? ORDER BY year DESC LIMIT 1;