私は3つのテーブルを持っています。画像、カテゴリ、image_category.
image: id | title | imageURL
categories: cat_id | cat_name
image_category: image_id | cat_id
すべての画像を新しいものから順に選択するための私の現在のクエリは次のとおりです。
SELECT image.id as ID, image.title as title, categories.cat_name as CAT
FROM image_category
LEFT JOIN image
ON image_category.image_id = image.id
INNER JOIN categories
ON image_category.cat_id = categories.cat_id
ORDER BY ID DESC
カテゴリごとに最新の 4 つの画像を表示したいと思います。最大の image.id は最新のイメージです。
例えば。3 つのカテゴリがあり、各カテゴリに 40 枚の画像があるとします。各カテゴリから最新の 4 枚の画像を表示したいと考えています。その後、カテゴリごとに次の 4 つを表示し、画像がなくなるまでカテゴリごとに次の 4 つを表示しようとします。
このソリューションは、私が探しているもののようです。
SELECT i1.*
FROM item i1
LEFT OUTER JOIN item i2
ON (i1.category_id = i2.category_id AND i1.item_id < i2.item_id)
GROUP BY i1.item_id
HAVING COUNT(*) < 4
ORDER BY category_id, date_listed;
しかし、image_id と category_id を接続するリレーショナル テーブルがあります。その追加のテーブル結合でこれを実装する方法を理解できません。
SQLの第一人者からの助けをいただければ幸いです。