0

こんにちは私の主な目標は、x テーブルを取得し、結合操作の行を検出するために使用される重複列を取得せずにそれらを結合することです。だから私は自然な結合が私が探しているものであることを発見しました:

内部結合で望ましくない結果:

http://s11.postimg.org/ujtadadj7/image.png

自然な結合で良い結果:

http://s28.postimg.org/yy6tmca0d/image.png

問題は、他のテーブル(ユーザーではない)で同じことをしようとすると、結果がゼロになることです):

select * from guilds natural join players;

ギルド テーブルには guild_id があり、プレイヤーには guild_id があります。

なぜそれが起こるのですか?別の方法がある場合、どうすれば目標を達成できますか? 私を助けてください、私は一日中解決策を探していました. . . 助けてくれてありがとう!

4

1 に答える 1

1

を実行するNATURAL JOINと、結合は、結合されたテーブルに共通するすべての列で実行されます。したがって、同じ名前の列が複数ある場合、それらはすべて結合で使用されます。これが、結果に行がない理由である可能性があります。

INNER JOINフィールドを繰り返さずON (tab1.field = tab2.field)に、句のようなものを使用して、あなたがしたように行うことができます。USING

SQL> select *
  2  from dual
  3  natural join dual;

DUMMY
----------
X

SQL> select *
  2  from dual d1
  3  inner join dual d2 on (d1.dummy = d2.dummy);

DUMMY      DUMMY
---------- ----------
X          X

SQL> select *
  2  from dual d1
  3  inner join dual d2 using(dummy);

DUMMY
----------
X
于 2016-03-07T21:48:33.763 に答える