今天早些时候,我在MS SQL Server中编写了多个JOIN查询时遇到了一个奇怪的问题,我希望有人能够帮助我更好地理解。通常我喜欢按照我在SELECT语句中从它们中提取的顺序连接表(对我来说似乎更简单,更清晰)。以下声明仅适用于SELECT语句的顺序,我不知道原因。如果我重新编写它以加入VW_ORDER_HEADER - > VW_ORDER_ITEM - >按顺序VW_PO_ITEM它不返回任何结果。我在Access中设计它并查看生成的SQL后才发现它有效。我不是SQL Server的新手,但是第一眼和第二眼我无法理解为什么连接的顺序会有所作为...提前感谢
SELECT O.SALES_ORDER_NUMBER,
O.BILL_TO,
O.SHIP_TO,
O.SOLD_TO,
O.ORDER_DATE,
O.REQUESTED_DELIVERY_DATE,
O.VALID_TO_DATE,
O.OPEN_QUANTITY,
OI.MATERIAL,
PI.PO_NUMBER
FROM VW_PO_ITEM PI
JOIN VW_ORDER_ITEM OI ON PI.MATERIAL = OI.MATERIAL
JOIN VW_ORDER_HEADER O ON OI.SALES_ORDER_NUMBER = O.SALES_ORDER_NUMBER
WHERE OI.MATERIAL = 'BA7948'
AND O.OPEN_QUANTITY > 0
AND O.VALID_TO_DATE >= GETDATE()
ORDER BY O.SALES_ORDER_NUMBER,
O.ORDER_DATE ASC;