1

これら 2 つのリレーション (1 つは 5 行、もう 1 つは 3 行) で NATURAL JOIN を実行する方法を教えてください。

第1関係

A   C
3   3
6   4
2   3
3   5
7   1

2次関係

B   C   D
5   1   6
1   5   8
4   3   9
4

3 に答える 3

1

あなたの質問では、共通の属性 (つまり列) を持つ 2 つの別個のリレーションがあります: C.

自然結合は、共通の属性を持つ両方のリレーションのすべてのタプルを結合します。結果は次のようになります。

A B C D    

7 5 1 6  
3 4 3 9
2 4 3 9
3 1 5 8

これは、@Matthew が投稿したコードを使用して SQL で実行できます。

于 2013-02-10T15:26:04.893 に答える
0

基本的に、CROSS JOIN を実行します。つまり、1 番目のリレーションのすべての行を 2 番目のリレーションのすべての行と結合します。次に、2 つの C 列があります。ここで、2 つの C が等しくないすべての行を削除し、それらを 1 つの列 C としてマージします。

于 2013-01-27T17:26:02.257 に答える
0

何かのようなもの:

SELECT * FROM 1stRelation NATURAL JOIN 2ndReleation

同じことを行い、明示的な列名を使用して内部結合を行います。すなわち:

SELECT * from 1stRelation as x INNER JOIN 2ndRelation as z ON x.C=z.C

個人的には、事前にテーブル構造を認識していないが、結合できるはずであることがわかっている場合を除いて、それらを使用しないことを好みます。

于 2013-01-27T17:12:38.090 に答える