Mysql 错误代码1054交叉联接上的未知列
我有三个表Mysql 错误代码1054交叉联接上的未知列,mysql,sql,Mysql,Sql,我有三个表项目,存储和库存移动。库存移动有以下字段:id、item\u id、store\u id和quantity。我想创建一个视图,显示每个商店中每个商品的数量总和。如果商店中的商品没有stock\u movement条目,则数量应为零 我提出了以下问题: SELECT item.*, store.id, SUM(s.quantity) AS quantity FROM item, store LEFT JOIN stock_movement s ON s.item_id = item.i
项目
,存储
和库存移动
。库存移动有以下字段:id
、item\u id
、store\u id
和quantity
。我想创建一个视图,显示每个商店中每个商品的数量总和。如果商店中的商品没有stock\u 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“on子句”中的未知列“item.id”
如果我将查询切换为使用存储中的,则项
未知列将更改:
错误代码:1054“on子句”中的未知列“store.id”
不适用于我,因为有些项目和商店没有相应的stock\u movement
条目,即结果缺少几行
那么有没有一种方法可以实现这种交叉连接呢?您需要明确定义您的
交叉连接:
select i.id, s.id, coalesce(sum(si.quantity),0) quantity
from store s
cross join item i
left join storeitem si on s.id = si.storeid and i.id = si.itemid
group by i.id, s.id
顺便说一句——通过这种方式,您正在创建笛卡尔产品——所有商店都有所有商品 通过在FROM
子句中使用逗号分隔的表列表,已经混合了隐式内部联接和显式左联接。您可能只需要在库存移动
和存储
之间进行左连接
,但是您能否发布每个表中的一小部分行样本,以及您期望查询输出的样本?您是否尝试过为项目和存储表添加别名?@Zoldren是的。相同的错误。该错误是由于在显式连接的ON
子句中使用隐式连接中的表时同时使用了隐式连接和显式连接造成的。@MichaelBerkowski使用显式连接有效。请添加一个进一步描述这一点的答案。特别是隐式和显式交叉连接,因为我似乎无法在线找到合适的解释。但是,不知道为什么隐式方法会失败。