2016-10-01 88 views
0

我試圖從3個不同的表創建一些列的視圖。其中的一個'OrderNumber'列在2個表中,所以我試圖爲它們做一個UNION,但因爲我做了一個子查詢,它返回一個1242錯誤,並且不會返回多於1行。我只是想知道如何重寫這個查詢,以便沒有子查詢,或者是否有繞過它的方法。或者,也許我需要編寫多個查詢?雖然我寧願保留一個查詢,謝謝。MySQL錯誤代碼1242

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

僅供參考,錯誤代碼'1242'代表**子查詢返回多個1行**。 –

回答

0

替換無論你的客戶ID

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 = ? 
+0

它工作^。^非常感謝你 – denkie

+0

你想接受答案嗎?謝謝 –

+0

對不起,我是這個網站的新手......我還有一個問題仍然與這個話題有關。該代碼僅適用於不包含'CREATE VIEW'的情況,我收到1052錯誤,'Column'OrderNumber'在字段列表中含糊不清'。有任何想法嗎?謝謝! – denkie

0

不清楚你的連接標準是什麼,因爲語句語法不好。但我假設你想加入OrderNumber,像SELECT ... FROM Customers INNER JOIN Orders ON Customers.OrderNumber = Orders.OrderNumber。在這種情況下,如果要使用兩個表中的訂單號,只需重複查詢並將兩者結合爲: SELECT ,,, FROM Customers INNER JOIN Order_Details ON Customers.OrderNumber = Order_Details.OrderNumber UNION SELECT FROM Customers INNER JOIN訂單ON Customers.OrderNumber = Orders.OrderNumber

+0

感謝您的回覆。只是爲了清理事情,'CustFirstName'和'CustLastName'來自Customers表。 'OrderNumber'來自Orders和Order_Details表。 'OrderDate'和'ShipDate'來自訂單表。 'QuantityOrdered'和'QuotedPrice'來自Order_Details表。 – denkie