我在数据库中有两个表。一个是产品图像,另一个是产品图像。我正在加入表格,以便我可以通过一个查询获得产品图像和信息:
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
。如何修复我的查询以获取所有产品?
答案 0 :(得分:2)
我会修改您的查询,以在结果中指定所需的确切列,而不是使用“select *”。在这种情况下,您可能在2个表中具有相同名称的列(例如“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
答案 1 :(得分: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