2016-05-12 70 views
0

我正在尝试创建我的产品列表。我在两张桌子,产品和products_photos之间建立了连接。sql加入不同的php

我得到了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

选择对整个选定行DISTINCT作品(不返回任何重复的行。) – jarlh

回答

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 = ?; 
+0

谢谢!那太完美了! –

0

如果你使用DISCINCT p.*,那么你获得的所有行,因为你还可以选择该行二(这是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 = ?