0

私はSQLが初めてで、この状況で使用する正しい結合を見つけようとしています。テーブル A には、一連の一意の (つまり、繰り返しがない) ID が含まれています。テーブル B には、テーブル A に存在しない ID を含む、各 ID の複数の測定値が含まれています。テーブル A にある ID のテーブル B のすべてのデータを含む結合テーブルが必要です。

例えば:

A               B                                 JOINED:
ID              ID  | count | date                ID  | count | date
-               --  | ----- | ----                --  | ----- | ----
001             001 | 512   | 01-Aug-2014         001 | 512   | 01-Aug-2014
003             001 | 123   | 08-Aug-2014         001 | 123   | 08-Aug-2014
004             002 | 2325  | 01-Aug-2014         003 | 2325  | 01-Aug-2014
                002 | 7653  | 08-Aug-2014         003 | 423   | 08-Aug-2014
                003 | 2325  | 01-Aug-2014         004 | 2     | 01-Aug-2014
                003 | 423   | 08-Aug-2014         004 | 76    | 08-Aug-2014
                004 | 2     | 01-Aug-2014
                004 | 76    | 08-Aug-2014
                005 | 232   | 01-Aug-2014
                005 | 67    | 08-Aug-2014

ここで、結合を正しく理解していれば、AB の LEFT 結合は、日付ごとに複数の行ではなく、ID ごとに 1 行しかない結果を生成します。RIGHT 結合には、A にはない B のすべての ID が含まれます。それは正しいですか?

要約すると、上記のような結果テーブルを取得するにはどうすればよいでしょうか?

4

4 に答える 4

3
SELECT A.ID 
      ,B.[Count]
      ,B.[Date]
FROM TableA A INNER JOIN TableB B 
ON A.ID = B.ID

INNER JOINは、2 つのテーブル間で一致する行を提供します。

RIGHT JOINは、結合キーワードの左側のテーブルからの一致する行と、結合キーワードの右側のテーブルからのすべての行を提供します。

LEFT JOINは、結合キーワードの右側にあるテーブルの一致する行と、結合キーワードの左側にあるテーブルのすべての行を提供します。

FULL JOINは、両方のテーブルから一致する行と一致しない行をすべて返します。

condition で定義された一致行ON結合条件は、tableA の ID 列の各値を tableB の ID 列の各値にマップしますmatching

于 2014-09-16T22:18:48.287 に答える
2

内部結合はあなたが探しているものです

あなたの質問について。私がそれを正しく理解していれば、答えはノーです。左結合は、内部結合 + LHS テーブルにあるが RHS にはないものであり、右結合と同様に空白を null で埋めます。

于 2014-09-16T22:15:48.443 に答える
1

これがあなたを助けることを願っています。

table1.column_name=table2.column_name で column_name(s) FROM table1 INNER JOIN table2 を選択します。

于 2014-09-16T22:22:54.547 に答える