0
select s.staff_name, s2.staff_name 'supervisor name'
from staff_relation s, staff_Relation s2
where s.staff_no = s2.supervisor

select s.staff_name, s2.staff_name 'supervisor name'
from staff_relation s, staff_Relation s2
where s.supervisor = s2.staff_no 

どちらも異なる結果を提供します。これはなぜですか?

更新:役立つかどうかわかりませんが、

テーブル画像リンク この画像は私が作成した小さなテーブルです。

上記は、私が作成した小さなテーブルの画像です。

最初のコマンドを実行すると、Anita が Ruth のスーパーバイザーであることがわかります。これは間違っています。しかし、2 番目のコマンドを実行すると、正しく表示されます。Ruth は Anita のスーパーバイザーです。

4

1 に答える 1

6

結合条件の順序を変更しただけでなく、選択したテーブルの列を変更しました。クエリが異なるため、結果は異なります。

で反転ss2SELECTのと同じ方法で で反転するとWHERE、同じ結果が得られます。

テーブルのエイリアスだけが変更された 2 つのクエリを次に示します。

select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name'
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR
where EMPLOYEE.staff_no = SUPERVISOR.supervisor

select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name'
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR
where EMPLOYEE.supervisor = SUPERVISOR.staff_no 

2 番目の結果が正しいのに 1 番目の結果が得られない理由がわかりますか?

于 2012-08-25T15:41:38.197 に答える