今天遇到多表查询问题。我尝试自己编写它,但它似乎不起作用,因此我选择了 Management Studio Design 视图中的所有列。代码应该可以工作,但可惜没有。如果我运行这个查询,它似乎会继续前进。我离开办公桌一分钟,当我回来停止查询时,它返回了大约 2,000,000 行(PODetail 表中只有大约 120,000 行!!):
SELECT PODetail.OrderNum, PODetail.VendorNum, vw_orderHistory.Weight, vw_orderHistory.StdSqft, vw_orderHistory.ReqDate, vw_orderHistory.City,
vw_orderHistory.State, FB_FreightVend.Miles, FB_FreightVend.RateperLoad
FROM PODetail CROSS JOIN
vw_orderHistory CROSS JOIN
FB_FreightVend
ORDER BY ReqDate
不仅如此,似乎每条记录的 OrderNum 都为 0,但事实并非如此。所以我试图排除它......
SELECT PODetail.OrderNum, PODetail.VendorNum, vw_orderHistory.Weight, vw_orderHistory.StdSqft, vw_orderHistory.ReqDate, vw_orderHistory.City,
vw_orderHistory.State, FB_FreightVend.Miles, FB_FreightVend.RateperLoad
FROM PODetail CROSS JOIN
vw_orderHistory CROSS JOIN
FB_FreightVend
WHERE PODetail.OrderNum <> 0
ORDER BY ReqDate
虽然它成功执行(没有错误),但它也不会返回任何记录。这里发生了什么?我也很好奇查询的 CROSS JOIN。当我自己尝试编写此代码时,我首先使用“WHERE PODetail.OrderNum = vw_orderHistory.OrderNum”来加入这些表,但我遇到了同样的无结果问题。当我尝试使用 JOIN 时,我收到有关“无法绑定多部分标识符”的错误。