我有两个表格('items'和'images'),并希望得到一个项目列表,每个项目只有一个图像。
假设item_id
为1,此项目在images
表格中有5条记录,我的代码项目1将在while循环中显示5次,因为它有5个图像,但这是不是我追求的。
我只需要一个图像就能显示一次该项目。
以下是我的发言:
SELECT * FROM items, images
WHERE item_banner = 'Yes'
AND item_publish = 'Yes'
AND image_type = 'img'
AND item_id = image_item_id
ORDER BY RAND();
答案 0 :(得分:1)
假设images
有一个id列,您可以按特定项目的最低image_id加入图片。
我对条件image_type = 'img'
感到好奇。你有不同类型的图像img
吗? :)
SELECT *
FROM
items i
LEFT JOIN images
ON image_item_id = item_id -- Not strictly needed, I guess
AND image_type = 'img'
AND image_id = (
SELECT MIN(image_id)
FROM images
WHERE image_item_id = item_id)
WHERE item_banner = 'Yes'
AND item_publish = 'Yes'
ORDER BY RAND();
答案 1 :(得分:0)
在我的案例中,此代码无需重复任何列,非常简单 我有一张桌子用于物品信息,一张桌子用于物品图像
CREATE or REPLACE VIEW items_page AS
select i.item_name,i.price,i.unit,
(select min(item_images.item_id) from item_images where item_images.item_id=i.case_id order by item_images.item_id asc)as item_id ,(select image_url from item_images where item_images.item_id=i.case_id order by item_images.item_id limit 1)as imageurl
from item i