以下是我的表格:
客户
Cust_ID (PK)
Name
订单
Order_ID (PK)
Cust_ID (FK)
ORDER_LINE
Order_ID (pk)
Part_ID (FK)
PART
Part_ID (PK)
Part_Description
现在,我想列出客户详细信息,部件号以及每个客户订购的部件的描述。
我该怎么做?
感谢。
答案 0 :(得分:2)
您应该使用FK使用“JOIN”,但是从我看到的“ORDERS”和“ORDER_LINE”之间没有外键。你确定你没有错过表定义中的某些内容,即:ORDER_LINE应该将ORDER_ID作为FK吗? 希望这有帮助
答案 1 :(得分: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连接子句组合了两个或多个表中的记录 数据库中。
JOIN关键字在SQL语句中用于查询来自两个或的数据 更多表,基于这些中某些列之间的关系 表。
对于一些图形示例
答案 2 :(得分: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
答案 3 :(得分: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 加入语法