左连接 - 未知列?

时间:2016-10-07 17:16:45

标签: mysql

你可以帮助我查询吗?我一直收到一条错误,指出“错误代码:1054。'on clause'中的未知列'cdata.customerid'”

如果我想在customerdata表和订单表中附加客户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";

2 个答案:

答案 0 :(得分:1)

on子句中,您必须指定属于参与join子句的表的字段。因此,如果您使用cdata子查询加入txns,则必须加入txns.idcdata.customerid。您可能还希望从子查询中获取总和,因此必须在主SELECT子句中包含此字段。你可能必须在transactiondate子句中指定group by字段,至少这对于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";

答案 1 :(得分:0)

JOIN引用表'order',表'txns','cdata'不在此处,因此在连接的上下文中cdata.customerid不存在。