sql join distinct php

时间:2016-05-12 11:34:45

标签: mysql sql

我正在尝试创建我的产品列表。我在两个表,产品和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,但我不知道如何解决这个问题。

2 个答案:

答案 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 = ?