2016-10-07 10 views
0

私の質問に私を助けることができますか? 「エラーコード:1054.「on句」の「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

:そして、あなたはおそらくあなたのgroup by句でtransactiondateフィールドを指定する必要があり、少なくともこれは私がこれは、MySQLの場合であればわからない、ORACLE DBのために必要です以前はそのように使われていました。それはあなたのスキーマ内のテーブルですか? – Uueerdo

+0

@Uuerdoの注文は明らかにテーブルの名前です。 –

+0

'txns'を使って' a'と 'cdata'を参照して' txns'を使って結合する 'ON'節はなぜですか? – Barmar

答えて

1

on句では、join句に参加しているテーブルに属するフィールドを指定する必要があります。したがって、cdatatxnsサブクエリを結合する場合は、おそらくtxns.idcdata.customeridに参加する必要があります。サブクエリから合計を取得したかったので、このフィールドをメインのSELECT句に含める必要があります。私は私が今まで見てきたとは思わない

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"; 
0

参照テーブル「注文」とテーブル「txns」を登録しよ参加cdata.customeridのコンテキストが存在しない内ので、「CDATA」はここでは関与しません。

+0

customerdataテーブルとorderテーブルから顧客IDの一致箇所に左結合データを添付したい場合は、どうしたらいいですか?私は、SQLがどのような時点でクエリのさまざまな部分でデータにアクセスできるようになっているかを理解してはいけません。 –