您能帮我解答疑问吗?我不断收到一条错误,指出“错误代码:1054。‘on 子句’中存在未知列‘cdata.customerid’”
如果我想附加客户数据表和订单表中客户 ID 匹配的左连接数据,我该如何实现?我一定不明白 SQL 在什么时候允许查询的不同部分访问数据。
select
cdata.customerid,
cdata.affiliate,
cdata.firstname,
cdata.address1,
cdata.address2,
cdata.city,
cdata.state,
cdata.postalcode,
cdata.emailaddress,
cdata.active
from customerdata cdata, order a
left join
(select
a.transactiondate,
sum(a.TransactionAmount),
a.id
from order a
group by a.id)
txns on a.id = cdata.customerid
where cdata.active = "A";
最佳答案
在on
子句中,您必须指定属于参与join
子句的表的字段。因此,如果您要将 cdata
与 txns
子查询连接,则可能必须连接 txns.id
和 cdata.customerid
。您可能还想从子查询中获取总和,因此您必须在主 SELECT
子句中包含此字段。而且您可能必须在 group by
子句中指定 transactiondate
字段,至少这对于 ORACLE DB 是必需的,我不确定 MySQL 是否是这样:
select
cdata.customerid,
cdata.affiliate,
cdata.firstname,
cdata.address1,
cdata.address2,
cdata.city,
cdata.state,
cdata.postalcode,
cdata.emailaddress,
cdata.active,
txns.tsum,
txns.transactiondate
from customerdata cdata
left join
(select
a.transactiondate,
sum(a.TransactionAmount) tsum,
a.id
from order a
group by a.id, a.transactiondate) txns
on txns.id = cdata.customerid
where cdata.active = "A";
关于mysql - 左连接 - 未知列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922727/