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
我有两个 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