0

这是我的表:

顾客

Cust_ID (PK)
Name

订单

Order_ID (PK)
Cust_ID (FK)

ORDER_LINE

Order_ID (pk)
Part_ID (FK)

部分

Part_ID (PK)
Part_Description

现在我想列出每个客户订购的客户详细信息、零件编号和零件描述。

我该怎么做呢?

谢谢。

4

4 回答 4

2

您应该使用 FK 使用“JOIN”,但据我所知,“ORDERS”和“ORDER_LINE”之间没有外键。您确定您没有遗漏表定义中的某些内容,即: ORDER_LINE 应该将 ORDER_ID 作为 FK 吗?希望这可以帮助

于 2012-11-01T08:17:07.680 回答
1

你可以尝试类似的东西

SELECT  c.*,
        p.*
FROM    CUSTOMER c INNER JOIN
        ORDERS o    ON  c.Cust_ID = o.Cust_ID INNER JOIN
        ORDER_LINE ol   ON  o.Order_ID = ol.Order_Number INNER JOIN
        PART p ON   ol.Part_Number = p.Part_Number

看一下

加入 (SQL)

SQL 连接子句将数据库中两个或多个表的记录组合在一起。

SQL 连接

JOIN 关键字在 SQL 语句中用于根据这些表中某些列之间的关系从两个或多个表中查询数据。

对于一些图形示例

加入基础

于 2012-11-01T08:16:29.593 回答
1

您需要的是一个简单直接的方法JOIN,如下所示:

SELECT 
  c.Cust_ID, 
  c.Name, 
  l.Part_Number, 
  l.Part_Description
FROM CUSTOMER c  
INNER JOIN ORDERS     o  ON c.Cust_ID      = o.Cust_ID
INNER JOIN ORDER_LINE ol ON o.OrdeR_ID     = ol.Order_Number
INNER JOIN PART       l  ON ol.Part_Number = l.Part_Number
于 2012-11-01T08:16:34.000 回答
1

你想要一个 SQL “join”,例如:

SELECT c.Name, ol.Part_Number, p.Part_Description
FROM Customer AS c
JOIN Orders AS o ON c.Cust_ID = o.Cust_ID
JOIN Order_Line AS ol ON o.Order_ID = ol.Order_Number
JOIN Part AS p ON ol.Part_Number = p.Part_Number

请注意,如果没有 WHERE 子句,此查询将返回所有客户的所有订单中的所有部分,这将真正影响网络并且在除小型数据库之外的任何其他设备上都表现不佳:

WHERE (c.Cust_ID = MyCustomerID)

MySQL连接语法
SQL Server连接语法

于 2012-11-01T08:17:01.720 回答