0

ユーザーが作成したアイテムに関する情報を保持するデータベースがあります。各アイテムには複数の画像を関連付けることができます。4つのランダムなアイテム画像をSQLクエリで取得したいのですが、同じアイテムからの画像を2回返さないようにする必要があります。

テーブル構造のレビューは次のとおりです(完全ではありませんが、関連情報が含まれています)。

表1:item_images:

+----------+--------------+
| item_id  |   filename   |
+----------+--------------+
|    1     |   test.jpg   | 
|    1     |   test2.jpg  |
|    5     |   testy.jpg  |
+----------+--------------+

表2:item_link:

+----------+-------------+
| item_id  | category_id |
+----------+-------------+
|    1     |      1      |
|    5     |      1      |
+----------+-------------+

上記のデータを前提として、アイテム#1と5はどちらもカテゴリ#1に存在するため、ランダムな画像を返します。

これは私がすでに試したSQLクエリですが、何らかの理由で、常に同じ2つの画像を返します。一致したアイテムからランダムな画像を返すようにこれを変更するにはどうすればよいですか?

SELECT `item_images`.`filename` AS `url` FROM `item_images`
  INNER JOIN `item_link` ON `item_images`.`item_id` = `item_link`.`item_id`
  WHERE `item_link`.`category_id` = 1 
  GROUP BY `item_link`.`item_id`
  ORDER BY RAND()
  LIMIT 4
4

2 に答える 2

1

テーブルからランダムな画像を見つけるためのクエリは次のとおりです。

SELECT distinct `item_images`.`filename` AS `url` FROM `item_images`, `item_link` 
  WHERE `item_images`.`item_id` = `item_link`.`item_id` and `item_link`.`category_id` = 1 
  ORDER BY RAND()
  LIMIT 4

それはあなたのqryを解決します

于 2012-11-03T12:16:03.013 に答える
1

webduosはあなたの問題を解決するはずです

ここに説明があります

SELECT distinct `item_images`.`filename` AS `url` FROM `item_images`
INNER JOIN `item_link` ON `item_images`.`item_id` = `item_link`.`item_id`
WHERE `item_link`.`category_id` = 1 
GROUP BY `item_link`.`item_id`
ORDER BY RAND()
LIMIT 4
于 2012-11-03T12:20:42.443 に答える