2013-04-06 42 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/