1

ここに私のテーブル構造があります

album
id ---- albumname
1   General
3   Sports
9   Activities
gallery
id --- ablumid--- image_thumb  --              image_full
1   1   uploads/1358401616.jpg  uploads/thumbs/thumb_1358401616.jpg
2   1   uploads/1358401641.jpg  uploads/thumbs/thumb_1358401641.jpg
3   1   uploads/1358402071.jpg  uploads/thumbs/thumb_1358402071.jpg
4   3   uploads/1358402334.jpg  uploads/thumbs/thumb_1358402334.jpg

問題は、1 つのギャラリーに対して画像が多すぎることです。

これが私のmysqlクエリです

SELECT DISTINCT gl.catid as gallery_cat_id, ab.albumname,gl.imagest 
FROM albums as ab 
INNER JOIN gallery as gl  ON ab.id=gl.catid 
order by ab.albumname ASC

これが結果です

gallery_id  albumname   image_full
38      Activities       uploads/thumbs/thumb_1358424428.jpg
41      Activities       uploads/thumbs/thumb_1358424483.jpg
40      Activities       uploads/thumbs/thumb_1358424468.jpg
39      Activities       uploads/thumbs/thumb_1358424446.jpg

クエリは、クエリに DISTINCT を追加したギャラリー テーブルのすべてのレコードを表示しますが、機能していません。私がここで見逃したことを誰か教えてもらえますか?

4

1 に答える 1

0

アルバムごとに (何があっても) 1 つの画像だけが必要な場合は、GROUP BY 句を使用して、アルバム ID でグループ化できます。

SELECT gl.catid as gallery_cat_id, ab.albumname, gl.imagest 
FROM
  albums as ab 
  INNER JOIN gallery as gl
  ON ab.id=gl.catid 
GROUP BY ab.id
order by ab.albumname ASC
于 2013-01-21T16:58:53.630 に答える