Sql server 如何构建跨多个表的查询?

Sql server 如何构建跨多个表的查询?,sql-server,Sql Server,这是我的桌子: 客户 Cust_ID (PK) Name 订单 Order_ID (PK) Cust_ID (FK) 订单行 Order_ID (pk) Part_ID (FK) 部分 Part_ID (PK) Part_Description 现在我想列出客户的详细信息、零件号以及每个客户订购的零件的说明 我该怎么做 谢谢。你可以试试类似的东西 SELECT c.*, p.* FROM CUSTOMER c INNER JOIN ORDERS o

这是我的桌子:

客户

Cust_ID (PK)
Name
订单

Order_ID (PK)
Cust_ID (FK)
订单行

Order_ID (pk)
Part_ID (FK)
部分

Part_ID (PK)
Part_Description
现在我想列出客户的详细信息、零件号以及每个客户订购的零件的说明

我该怎么做


谢谢。

你可以试试类似的东西

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.*,
        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

您需要的是一个简单明了的
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“连接”,例如:

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子句,此查询将为所有客户返回所有订单中的所有零件,这将真正影响网络,并且在任何情况下都会表现不佳,除了一个很小的数据库:

其中(c.Cust_ID=MyCustomerID)

连接语法
连接语法

您想要SQL“连接”,例如:

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子句,此查询将为所有客户返回所有订单中的所有零件,这将真正影响网络,并且在任何情况下都会表现不佳,除了一个很小的数据库:

其中(c.Cust_ID=MyCustomerID)

连接语法
join语法

您应该使用FK使用“join”,但从我看到的情况来看,“ORDERS”和“ORDER_LINE”之间没有外键。您确定表定义中没有遗漏某些内容,例如:订单行应该将订单ID作为FK? 希望这对您有所帮助

您应该使用FK使用“JOIN”,但从我看到的情况来看,“ORDERS”和“ORDER_LINE”之间没有外键。您确定表定义中没有遗漏某些内容,例如:订单行应该将订单ID作为FK? 希望这有帮助

我想会有帮助。我想会有帮助。