次のようなクエリを書いたとき..すべてのレコードの組み合わせが書かれています。クエリの間違いは何ですか?
SELECT ven.vendor_code, add.address1
FROM vendor ven INNER JOIN employee emp
ON ven.emp_fk = emp.id
INNER JOIN address add
ON add.emp_name = emp.emp_name;
次のようなクエリを書いたとき..すべてのレコードの組み合わせが書かれています。クエリの間違いは何ですか?
SELECT ven.vendor_code, add.address1
FROM vendor ven INNER JOIN employee emp
ON ven.emp_fk = emp.id
INNER JOIN address add
ON add.emp_name = emp.emp_name;
ON
内部結合を使用すると、2 つのテーブル間のすべてのリンク (関係) を句に入れる必要があります。
関係が良好であると仮定すると、次のクエリをテストして、すべてのレコードの組み合わせが実際に作成されるかどうかを確認できます。
SELECT count(*)
from vendor ven
inner join employee emp on ven.emp_fk = emp.id
inner join address add on add.emp_name = emp.emp_name;
SELECT count(*)
add.address1
from vendor ven, employee emp, address add
両方のクエリが同じ結果を返す場合 (これは疑問です)、あなたの言うとおりです。
そうでない場合は、私が推測するように、結果の数をフィルタリングするための関係または制限が欠落している可能性があります。