Код ошибки: 1054: неизвестный столбец Orders.Customer_ID в on on - PullRequest
0 голосов
/ 02 мая 2020

Я постоянно получаю эту ошибку Даже если не отображается никаких синтаксических ошибок.

Я создал две таблицы, а именно «Клиенты» и «Заказы», ​​и когда я пытаюсь использовать FULL JOIN, как указано ниже в mySQL Workbench.

SELECT DATE,NAME,Order_Price,Delivery_Address
FROM Orders
FULL JOIN Customers
ON Orders.Customer_ID = Customers.Customer_ID;

Пожалуйста, смотрите связанный скриншот моей таблицы: -

Таблица клиентов

enter image description here

Таблица заказов

enter image description here

Показывает ошибку 1054.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Как указывает Strawberry, full join не поддерживается в MySQL. Однако, это, вероятно, совсем не обязательно для вашего запроса. Трудно представить заказы, в которых Customer_Id недействителен. У вас могут быть клиенты без заказов, но это должно быть выполнено следующим образом:

SELECT DATE, NAME, Order_Price, Delivery_Address  -- you should qualify all column references
FROM Customers c LEFT JOIN
     Orders o
     ON o.Customer_ID = c.Customer_ID;

Если вы привыкли всегда использовать псевдонимы таблиц, то вы обнаружите, что этот запрос:

SELECT DATE, NAME, Order_Price, Delivery_Address  -- you should qualify all column references
FROM Customers c FULL JOIN
     Orders o
     ON o.Customer_ID = c.Customer_ID;

возвращает ошибку.

0 голосов
/ 02 мая 2020

FULL [OUTER] JOIN - это не вещь в MySQL, поэтому вместо этого ваш запрос неверно интерпретируется следующим образом:

SELECT date
     , name
     , order_price
     , delivery_address
  FROM orders full
  JOIN customers 
   ON orders.Customer_ID = Customers.Customer_ID;

... где full - псевдоним для заказов. Если вы измените последнюю строку на ...

ON full.Customer_ID = Customers.Customer_ID;

... она будет работать; это просто не вернет желаемый результат. Но альтернативы для FULL OUTER JOIN в MySQL широко обсуждаются в других местах, поэтому я оставлю это на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...