你可以帮助我查询吗?我一直收到一条错误,指出“错误代码: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";
答案 0 :(得分:1)
在on
子句中,您必须指定属于参与join
子句的表的字段。因此,如果您使用cdata
子查询加入txns
,则必须加入txns.id
和cdata.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不存在。