这是我的表:
顾客
Cust_ID (PK)
Name
订单
Order_ID (PK)
Cust_ID (FK)
ORDER_LINE
Order_ID (pk)
Part_ID (FK)
部分
Part_ID (PK)
Part_Description
现在我想列出每个客户订购的客户详细信息、零件编号和零件描述。
我该怎么做呢?
谢谢。
这是我的表:
顾客
Cust_ID (PK)
Name
订单
Order_ID (PK)
Cust_ID (FK)
ORDER_LINE
Order_ID (pk)
Part_ID (FK)
部分
Part_ID (PK)
Part_Description
现在我想列出每个客户订购的客户详细信息、零件编号和零件描述。
我该怎么做呢?
谢谢。
您应该使用 FK 使用“JOIN”,但据我所知,“ORDERS”和“ORDER_LINE”之间没有外键。您确定您没有遗漏表定义中的某些内容,即: ORDER_LINE 应该将 ORDER_ID 作为 FK 吗?希望这可以帮助
你可以尝试类似的东西
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 语句中用于根据这些表中某些列之间的关系从两个或多个表中查询数据。
对于一些图形示例
您需要的是一个简单直接的方法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
你想要一个 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连接语法