2016-05-12 68 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 = ?