我使用3个表来获取一定数量的记录。 以下是我的表格:
1.Order - orderNumber,CustomerNumber
2. OrderDetails - orderNumber, productCode
3. Products - productCode, productName
4. Customers - CustomerNumber, CustomerName
现在,对于前10个订单,我必须从这4个表中获取orderNumber,CustomerName和productName。我已经完成了多个查询,但无法获得所需的结果,如: -
select Orders.orderNumber, OrderDetails.productCode,Orders.customerNumber
from Orders, OrderDetails
where Orders.orderNumber = OrderDetails.orderNumber limit 10;
使用这个我只是想获得orderNumber,productCode和CustomerNumber所以我可以构建我的查询,但它只显示订单中每个orderNumber的一个产品,而不是单个orderNumber中的所有产品。
+-------------+-------------+----------------+
| orderNumber | productCode | customerNumber |
+-------------+-------------+----------------+
| 10100 | S18_1749 | 363 |
| 10100 | S18_2248 | 363 |
| 10100 | S18_4409 | 363 |
| 10100 | S24_3969 | 363 |
| 10101 | S18_2325 | 128 |
| 10101 | S18_2795 | 128 |
| 10101 | S24_1937 | 128 |
| 10101 | S24_2022 | 128 |
| 10102 | S18_1342 | 181 |
| 10102 | S18_1367 | 181 |
编辑1: 从Order表中的前10个订单开始,我需要从给定的表中获取相应的OrderNumber,CustomerName和productName。
编辑2: 根据@simsim
查询结果 orderNumber | productCode | customerName |
+-------------+-------------+------------------------------+
| 10100 | S18_1749 | Online Diecast Creations Co. |
| 10100 | S18_2248 | Online Diecast Creations Co. |
| 10100 | S18_4409 | Online Diecast Creations Co. |
| 10100 | S24_3969 | Online Diecast Creations Co. |
| 10101 | S18_2325 | Blauer See Auto, Co. |
| 10101 | S18_2795 | Blauer See Auto, Co. |
| 10101 | S24_1937 | Blauer See Auto, Co. |
| 10101 | S24_2022 | Blauer See Auto, Co. |
| 10102 | S18_1342 | Vitachrome Inc. |
| 10102 | S18_1367 | Vitachrome Inc. |
答案 0 :(得分:0)
您的问题不明确,请详细说明您的目标。
但是,如果我理解正确,您希望在结果“产品名称和客户名称”中也得到他的名字,因此,您可能需要使用联接
示例查询:
SELECT
OrderNumber,
ProductCode,
ProductName,
CustomerNumber,
CustomerName
FROM
(
Select
O.OrderNumber,
P.ProductCode,
P.ProductName,
C.CustomerNumber,
C.CustomerName
From
Orders O
INNER JOIN OrderDetails OD On
O.OrderNumber = OD.OrderNumber
INNER JOIN Products P On OD.ProductCode = P.ProductCode
INNER JOIN Customers C On O.CustomerNumber = O.CustomerNumber
)
WHERE ROWNUM <= 10
注意:您的查询是
的一半根据您的解释进行修改:
SELECT
OrderNumber,
ProductCode,
ProductName,
CustomerNumber,
CustomerName
FROM
(
Select
O.OrderNumber,
P.ProductCode,
P.ProductName,
C.CustomerNumber,
C.CustomerName
From
Orders O
INNER JOIN OrderDetails OD On
O.OrderNumber = OD.OrderNumber
INNER JOIN Products P On OD.ProductCode = P.ProductCode
INNER JOIN Customers C On O.CustomerNumber = O.CustomerNumber
WHERE O.OrderNumber IN
(
SELECT OrderNumber FROM Orders
WHERE ROWNUM <= 10
)
)
答案 1 :(得分:0)
如果使用Sql Server
,请尝试以下操作选择前10个Orders.orderNumber,OrderDetails.productCode,Orders.customerNumber 来自Orders,OrderDetails 其中Orders.orderNumber = OrderDetails.orderNumber;
所有sql数据库都不支持。