MySQL код ошибки 1242

Я пытаюсь создать представление некоторых столбцов из 3 разных таблиц. Один из столбцов «OrderNumber» находится в 2 таблицах, поэтому я пытаюсь выполнить объединение для них, но поскольку я сделал подзапрос, он возвращает ошибку 1242 и не возвращает больше 1 строки. Я просто хочу знать, как я могу переписать этот запрос так, чтобы не было подзапросов, или есть какой-то способ обойти его. Или, возможно, мне нужно написать несколько запросов? Хотя я бы предпочел оставить его на один запрос, спасибо.

CREATE VIEW CustOrderItems AS
SELECT CustFirstName,
       CustLastName,
       (SELECT OrderNumber
       FROM Orders
       UNION
       SELECT OrderNumber
       FROM Order_Details)
       OrderDate,
       ShipDate,
       QuantityOrdered * QuotedPrice as ItemTotal
FROM Customers JOIN Orders JOIN Order_Details;

2 ответа

  1. Неясно, каковы ваши критерии соединения, потому что синтаксис оператора плох. Но я предполагаю, что вы хотите присоединиться к OrderNumber, как SELECT … От клиентов внутренние заказы соединения на клиентах.OrderNumber = Заказы.Порядковый номер. В этом случае, если вы хотите использовать порядковые номера из двух таблиц, просто повторите запрос и объедините их, как:
    Выберите ,,, из Customers INNER JOIN Order_Details ON Customers.OrderNumber = Order_Details.Порядковый номер
    СОЮЗ
    Выберите от клиентов внутренние заказы соединения на клиентах.OrderNumber = Заказы.Порядковый номер

  2. Замените любой ваш идентификатор клиента

    drop view if exists custorders;
    create view custorders as
    SELECT     c.CustFirstName,
               c.CustLastName,
               o.OrderNumber order_ordernumber,
               od.OrderNumber orderdetails_ordernumber,
               o.OrderDate,
               o.ShipDate,
               od.QuantityOrdered * od.QuotedPrice as ItemTotal
    FROM Customers c
    JOIN Orders o on c.id = o.cust_id
    JOIN Order_Details od on o.ordernumber = od.ordernumber
    where c.id = ?