SQLServer2005内部联接

SQLServer2005内部联接,sql,sql-server,sql-server-2005,join,inner-join,Sql,Sql Server,Sql Server 2005,Join,Inner Join,我有两个表,它们按OrderID分组 比如: Orders.OrderID OrderDetails.OrderID 我试图从OrderDetails表中调用一个列,但我需要在Orders表中调用它 我需要调用连接或内部连接或分组方式,在这里我可以将OrderDetails与Orders表分组,并且OrderID的匹配项显示OrderDetails.ProductCode。由于这几乎毫无意义,我现在的问题是: SELECT Orders.OrderID, Orders.OrderDa

我有两个表,它们按
OrderID
分组

比如:

Orders.OrderID
OrderDetails.OrderID
我试图从
OrderDetails
表中调用一个列,但我需要在
Orders
表中调用它

我需要调用
连接
内部连接
分组方式
,在这里我可以将
OrderDetails
Orders
表分组,并且
OrderID
的匹配项显示
OrderDetails.ProductCode
。由于这几乎毫无意义,我现在的问题是:

SELECT 
    Orders.OrderID, Orders.OrderDate, Orders.ShipLastName, Orders.ShipFirstName, 
    Orders.ShipCity, Orders.ShipState, Orders.Order_Comments, Orders.OrderNotes, 
    Orders.ShipPhoneNumber, Orders.ShipDate
FROM Orders 
WHERE Orders.OrderStatus = 'Shipped'  
AND Orders.ShipDate > DATEADD(Day, Datediff(Day,0, GetDate() -20), 0)
AND Orders.ShipDate < DATEADD(Day, Datediff(Day,0, GetDate() -13), 0)
选择
Orders.OrderID、Orders.OrderDate、Orders.ShipLastName、Orders.ShipFirstName、,
Orders.ShipCity、Orders.ShipState、Orders.Order\u注释、Orders.OrderNotes、,
Orders.ShipPhoneNumber,Orders.ShipDate
从命令
其中Orders.OrderStatus='Shipped'
和Orders.ShipDate>DATEADD(Day,Datediff(Day,0,GetDate()-20),0)
和Orders.ShipDate
基本上,我希望
选择
OrderDetails.ProductCode,但首先需要按
OrderID
对它们进行分组,因为它们位于不同的表中

谢谢

试试看

SELECT Orders.OrderID, Orders.OrderDate, Orders.ShipLastName, Orders.ShipFirstName, Orders.ShipCity, Orders.ShipState, Orders.Order_Comments, Orders.OrderNotes, Orders.ShipPhoneNumber, Orders.ShipDate, OrderDetails.[COLUMNNAME_HERE]
FROM Orders, OrderDetails
WHERE Orders.OrderID = OrderDetails.OrderID AND 
Orders.OrderStatus = 'Shipped' AND
AND Orders.ShipDate > DATEADD(Day, Datediff(Day,0, GetDate() -20), 0)
AND Orders.ShipDate < DATEADD(Day, Datediff(Day,0, GetDate() -13), 0)
选择Orders.OrderID、Orders.OrderDate、Orders.ShipLastName、Orders.ShipFirstName、Orders.ShipCity、Orders.ShipState、Orders.Order\u注释、Orders.OrderNotes、Orders.ShipPhoneNumber、Orders.ShipDate、OrderDetails。[此处为COLUMNNAME\u]
来自订单,订单详情
其中Orders.OrderID=OrderDetails.OrderID和
Orders.OrderStatus='Shipped'和
和Orders.ShipDate>DATEADD(Day,Datediff(Day,0,GetDate()-20),0)
和Orders.ShipDate
试试这个:

SELECT o.OrderID, o.OrderDate, o.ShipLastName, o.ShipFirstName,
       o.ShipCity, o.ShipState, o.Order_Comments, o.OrderNotes,
       o.ShipPhoneNumber, o.ShipDate
FROM OrderDetails od
INNER JOIN Orders o ON o.OrderID = od.OrderID
WHERE o.OrderStatus = 'Shipped'  
AND o.ShipDate > DATEADD(Day, Datediff(Day, 0, GetDate() -20), 0)
AND o.ShipDate < DATEADD(Day, Datediff(Day, 0, GetDate() -13), 0)
选择o.OrderID、o.OrderDate、o.ShipLastName、o.ShipFirstName、,
o、 ShipCity、o.ShipState、o.Order_注释、o.OrderNotes、,
o、 ShipPhoneNumber,o.ShipDate
从订单详细信息od
o.OrderID=od.OrderID上的内部联接顺序o
其中o.OrderStatus='Shipped'
和o.ShipDate>DATEADD(Day,Datediff(Day,0,GetDate()-20),0)
和o.ShipDate

然后,您可以将所需的任何详细信息从OrderDetails表添加到列列表中(否则,您将在OrderDetails中看到每个唯一OrderID的相同行)。

多亏了Andrey M,我找到了它,而且它起到了作用

它表示无法绑定OrderDetails.OrderID。我想我应该提到,OrderDetails表中的多行可以具有相同的OrderID。这很好地工作,但它为每个订单创建了一个副本,该订单具有多个基于OrderID匹配的OrderDetails。OrderDetails表中的多行可以具有相同的OrderID。我怎样才能让它用逗号分隔产品代码而不复制订单?是的,正如我所说,它会有重复的行。这是OrderDetails具有多个具有相同OrderID的行这一事实的自然结果。您可以将od.ProductCode添加到每一行,以使它们唯一。是否用逗号分隔产品代码?这是一个与如何进行内部连接完全不同的问题。是否容易将产品代码与任何内容分离?空格、逗号、句点?ProductCode是什么意思,但首先需要按OrderID对它们进行分组。。。。。这一点并不清楚。如果您有一个包含5个详细信息的
订单
,并且这些详细信息涉及五个不同的
ProductID
值-您不能根据这些值进行分组-它们是不同的、独立的值-您将始终得到多行!听起来你想连接细节并以(逗号分隔的?)列表的形式返回它们,在这种情况下,你可以开始。太好了,我稍后会尝试…