2012-04-22 69 views
1

我在數據庫中有兩個表。一個用於產品,另一個用於產品圖像。我加入的表,這樣我可以有一個查詢得到的產品圖片和信息:左連接重複列

SELECT * 
from items left join images 
    on items.item_id = images.item_id and 
     items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc 

我注意到了,但是,所有的產品均沒有顯示出來。一些產品沒有任何圖像,那些沒有出現。我在Sequel Pro中運行了我的查詢,看到列item_id出現兩次,一次是id,一次是NULL。如何修復我的查詢以獲取所有產品?

回答

2

我會修改您的查詢,以在結果中指定想要的確切列,而不是使用「select *」。在這種情況下,您可能在兩個表中具有相同名稱的列(例如「item_id」),這會在「select *」中導致問題。

另外,我會把你的ON語句的第二行放到WHERE子句中。 「items.display_items ='1'和items.active ='1'」不適用於您的加入,而是適用於您想要的一組項目。

修訂查詢:

SELECT --explicit list of columns 
from items 
    left join images 
    on items.item_id = images.item_id 
WHERE items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc 
+0

這完美地工作。 SELECT *是問題所在。謝謝! – 2012-04-22 03:04:00

0

你缺少一個WHERE子句。假設你只想從items數據,試試這個:

SELECT it.* 
FROM items it 
LEFT JOIN images im 
ON it.item_id = im.item_id 
WHERE it.display_items = '1' and it.active = '1' 
ORDER BY it.item_year desc, it.fullname desc, im.position asc