2016-10-07 2 views
0

Можете ли вы помочь мне с моим запросом? Я продолжаю получать сообщение об ошибке «Код ошибки: 1054. Неизвестный столбец« cdata.customerid »в разделе« on »»Слева Join - Неизвестная колонна?

Если я хочу прикрепить данные левого соединения, в которых совпадение идентификатора клиента с таблицей данных клиента и таблицей заказов , как я могу это достичь? Я не должен понимать, в какой точке 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

Я не думаю, что я когда-либо видел 'order' использовал этот путь раньше; это таблица в вашей схеме? – Uueerdo

+0

Порядок @Uuerdo - это, по-видимому, название таблицы. –

+0

Почему ваше предложение 'ON' для соединения с' txns' ссылается на 'a' и' cdata', но не 'txns'? – Barmar

ответ

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

Соединить ссылается на таблицу «порядок» и таблица «txns», «CDATA» не участвует здесь, так что в контексте джойна cdata.customerid не существует.

+0

Если я хочу прикрепить данные левого соединения, где совпадает идентификатор клиента из таблицы customerdata и таблицы заказов, как я могу это достичь? Я не должен понимать, в какой точке SQL позволяет доступным данным доступным для разных частей запроса. –

Смежные вопросы