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. 如何修复我的查询以获取所有产品?

4

2 回答 2

2

我会修改您的查询以在结果中指定您想要的确切列,而不是使用“select *”。在这种情况下,您可能在 2 个表中有同名的列(例如“item_id”),这可能会导致“select *”出现问题。

另外,我会将您的 ON 语句的第二行放在 WHERE 子句中。“items.display_items = '1' and 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
于 2012-04-22T02:56:17.317 回答
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
于 2012-04-22T02:57:22.200 回答