2013-04-06 13 views
0

您好我正在使用sql plus,我需要從4個表中選擇5列,並顯示結果。這是我使用的代碼和我得到的錯誤。需要幫助!與 - SQL Plus選擇多列

SELECT CustomerID, OrderID, AircraftID, Quantity, TotalCost 
FROM Customer_Table, Order_Table, Aircraft_Table, Orderline; 

ERROR位於第1行:ORA-00918:列定義的含糊

是什麼代碼即可獲得這些列和多個表中顯示它們。請幫助。

+1

你意識到你正在4個表上進行交叉連接? – 2013-04-06 00:49:44

+0

是的,但我需要代碼來幫助顯示四個表的結果,你知道如何。 – 2013-04-06 00:53:03

回答

0

我不知道SQL plus,但是在大多數SQL變體中,您應該指定一個表名,然後指定一個列名。如SELECT Customer_Table.CustomerID ......這將消除在結果投影中應使用哪個列。

+0

這工作,但事情是它運行一個永無止境的循環選擇Customer_Table.CustomerID,Order_Table.OrderID,Aircraft_Table.AircraftID,Orderline.Quantity,Order_Table.TotalCost從Customer_Table,Order_Table,Aircraft_Table,Orderline; – 2013-04-06 01:08:59

+0

您創建的交叉連接導致返回集的大小爲表1次的行數,表2次的行數....它最終會結束... – 2013-04-06 01:21:44

0

該錯誤表示這些表中存在一個或多個具有相同名稱的列。這就是爲什麼它不知道從哪個表中選擇哪個列。如果你可以指定表名和列,我認爲這應該消失。

+0

這有效,但它運行了一個永遠不會結束循環,我該如何讓結果例如停止就像一張表格,顯示完整的信息。請。 選擇Customer_Table.custID,Order_Table.Order_ID,Aircraft_Table.airID,Order_Line.Quantity, Order_Table.Total_cost FROM cust,Order_Table,airbuy,order_line; – 2013-04-06 01:11:31

+0

你在做一個CROSS JOIN,這實質上意味着做一個笛卡爾產品。所以如果你有很多行,它將需要很長時間才能完成。 – Mandar 2013-04-06 01:14:05

+0

我該怎麼做,我應該做2列2表,然後做其他2列和2表相同。 – 2013-04-06 01:15:52

1

原因是你試圖執行一個連接兩個或多個表的SQL語句,在這兩個表中存在一個同名的列。

爲例此SQL查詢

SELECT suppliers.supplier_id, quantity 
FROM suppliers, orders 
WHERE suppliers.supplier_id = orders.supplier_id; 

由於supplier_id列在這兩個供應商和訂單表存在,你需要前綴表名列如下:此外

你需要在他們之間鏈接你的表。如果我拿上面的例子中,你應該做這種事情

WHERE suppliers.supplier_id = orders.supplier_id; 

意味着你被列與表orders鏈接表supplierssupplier_id

這篇文章可以幫助您瞭解您的問題: http://www.sitepoint.com/understanding-sql-joins-mysql-database/