php select 每个项目只有一张图片

php select only one image for each item

我有两个 table('items' 和 'images'),我想获得一个项目列表,每个项目只有一张图片。

假设 item_id 为 1,并且该项目在 images table 处有 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();

假设 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();

对于我的情况,这段代码没有重复任何列并且非常简单 我有一个 table 用于项目信息,一个用于项目图像

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