タスク:カテゴリは‘Sea Food’
に属するすべての受注を選択します。予期しない場合、クエリはデカルト積を返します
結果:あるOrderNo、受注日、製品名
私はこのクエリを書きますが、それはデカルト積を返します。
select o.orderid, o.orderdate as "Order Date", p.productname , ct.categoryname from orders o,
order_details od , products p , customers c ,categories ct
where
od.orderid = o.orderid and p.productid = od.productid and ct.categoryid = p.categoryid
and ct.categoryname = 'Seafood';
質問:私のクエリの何が問題になっているのですか?
1つ目は、コンマが「FROM」節で過度に使用されているアーカイブ構文を使用していることです。適切な明示的な 'JOIN'構文の使用方法を学んでください。 –
'where'の代わりに' join'を使ってテーブルを結合してください。 2人のための内部作業は非常に異なっています。 where句を使用して表に結合すると、Oracleはすべての表のデカルト積を最初に実行し、Where句を適用するため、デカルト積が得られます。 – Munir
whereテーブルでcustomerテーブルが使用されていませんか? – cableload