【发布时间】:2015-05-05 15:24:44
【问题描述】:
我有三个表item、store 和stock_movement。股票走势具有id、item_id、store_id 和quantity 字段。我想创建一个视图,显示每个商店中每个项目的数量总和。如果商店中的商品没有 stock_movement 条目,则数量应为零。
我想出了以下查询:
SELECT item.*, store.id, SUM(s.quantity) AS quantity
FROM item, store
LEFT JOIN stock_movement s ON s.item_id = item.id AND store.id = s.store_id
GROUP BY store.id, item.id;
我收到以下错误:
错误代码:1054 Unknown column 'item.id' in 'on Clause'
如果我将查询切换为使用FROM store, item,未知列会发生变化:
错误代码:1054 Unknown column 'store.id' in 'on Clause'
This answer to use INNER JOIN 对我不起作用,因为有些商品和商店没有对应的 stock_movement 条目,即结果缺少几行。
那么有没有办法进行这种交叉连接?
【问题讨论】:
-
您已经在
FROM子句中使用逗号分隔的表列表混合了隐式内连接和显式左连接。可能您所需要的只是介于stock_movement和store之间的LEFT JOIN,但是您能否发布每个表中的一小部分行样本以及您期望查询输出的样本? -
您是否尝试过为 item 和 store 表设置别名?
-
@Zoldren 是的。同样的错误。
-
错误是因为同时使用了隐式连接和显式连接,使用显式连接的
ON子句中的隐式连接表。 -
@MichaelBerkowski 使用显式连接有效。请添加一个进一步描述此问题的答案。特别是隐式与显式交叉连接,因为我似乎无法在网上找到合适的解释