我正在尝试创建我的产品列表。我在两个表,产品和products_photos之间进行了连接。
我的X产品在产品照片上有一个注册。当我在产品照片表上有两个具有相同id_product的注册时,问题就来了。然后,结果显示具有不同照片的相同产品的2倍。我想只显示第一个,而不是同一产品的两倍。
SELECT DISTINCT p.*, photo.url_little
FROM ".Constants::$PRODUCTS_TABLE." as p
LEFT JOIN ".Constants::$PHOTOS_PRODUCTS_TABLE." as photo ON p.id=photo.id_product
WHERE p.id_client = ?
我可能会错误地使用命令distinct
,但我不知道如何解决这个问题。
答案 0 :(得分:0)
如果您只想显示一个,请使用相关子查询:
select p.*,
(select ph.url_little
from ".Constants::$PHOTOS_PRODUCTS_TABLE." ph
where p.id = ph.id_product
order by ph.id asc
limit 1
) as url_little
from ".Constants::$PRODUCTS_TABLE." as p
where p.id_client = ?;
答案 1 :(得分:0)
如果您使用DISCINCT p.*
,那么您将获得所有行,因为您还选择了行di(并且这是unque)
尝试相同的查询,但只能使用您需要的列
SELECT DISTINCT p.column_i_need1, photo.url_little
FROM ".Constants::$PRODUCTS_TABLE." as p
LEFT JOIN ".Constants::$PHOTOS_PRODUCTS_TABLE." as photo
ON p.id = photo.id_product WHERE p.id_client = ?