今日、複数テーブルのクエリで問題が発生しました。自分で書いてみましたがうまくいかないようだったので、Management Studio のデザイン ビューですべての列を選択しました。コードは機能する必要がありますが、残念ながら機能しません。このクエリを実行すると、ずっと進んでいるように見えます。1 分間デスクを離れ、戻ってクエリを停止したところ、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 を使用しようとすると、「マルチパート識別子をバインドできませんでした」というエラーが発生しました。