2012-11-03 153 views
0

我有一個數據庫,其中包含有關用戶創建的項目的信息。每個項目可以有多個圖像相關聯,我想有一個SQL查詢4個隨機項目圖像,但不應該從同一個項目兩次返回圖像。返回隨機圖像SQL

這裏的表結構的審查(不完全,但包括相關的信息):

表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查詢,但由於某種原因,它總是返回相同的兩個圖像。我該如何修改它以從匹配的項目中返回一個隨機圖像?

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 

回答

1

webduos是對不同的應該解決您的問題

這裏是explaination

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 
+1

謝謝,此版本正常工作。 – BenM

+0

歡迎您:) – ChaosClown

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

+0

It並沒有解決我的問題。這將返回來自同一項目的一些圖像,這不是我想要的。 – BenM