Я создал следующее DataModel
:

Таблица Клиент
INSERT INTO test.customer
(CustomerName, CustomerCountry, RegistrationDate)
VALUES
("Customer A","DE","2015-05-03"),
("Customer B","US","2015-07-25"),
("Customer C","US","2016-02-15"),
("Customer D","DE","2017-09-21"),
("Customer E","AU","2018-12-07");
Таблица Заказы
INSERT INTO test.orders
(idCustomer, PaymentMethod, OrderDate)
VALUES
("1","CreditCard","2015-05-04"),
("1","PayPal","2015-11-18"),
("3","PayPal","2017-09-04"),
("2","Invoice","2018-04-30");
Пока все это прекрасно работает.
Теперь я хочу заполнить таблицу SpecialCustomers
значениями из таблицы Customer
и Orders
на основе WHERE
условий.Поэтому я попробовал следующий код:
INSERT INTO test.specialcustomers
(idCustomer, CustomerName)
SELECT idCustomer, CustomerName
FROM test.customer
LEFT JOIN test.orders ON test.customer.idCustomer = test.orders.idCustomer
WHERE PaymentMethod ="PayPal";
, который вызывает ошибку:
Error Code: 1052. Column 'idCustomer' in field list is ambiguous
Насколько я вижу, проблема в том, что Customer A
имеет оба порядка с Paypal
и CreditCard
, поэтому PaymentMethod
, присвоенный Customer A
, не является уникальным.
Однако моя цель - вставить каждого клиента в таблицу SpecialCustomers
, как только наступит условие встречается как минимум один раз .
Следовательно, - в случае выше - если хотя бы один заказ оплачен с помощью PayPal
, клиент должен быть вставлен в таблицу SpeicalCustomers
.
Что мне нужно изменить в своем коде насделать эту работу?