2016-10-12 9 views
1

私は2つの結果セットAとBmysqlで2つの結果セットを結合またはマージする方法は?

AがテーブルBは、私が

を次のように出力を達成したい、この

+------+---------+----------+ 
| b_id | item no | location | 
+------+---------+----------+ 
| 1 |  101 | A1  | 
| 2 |  102 | A2  | 
| 3 |  103 | A3  | 
| 4 |  104 | A4  | 
+------+---------+----------+ 

のように見えるこの

+------+---------+------------+ 
| a_id | item no | total sold | 
+------+---------+------------+ 
| 1 |  101 |   23 | 
| 2 |  102 |   34 | 
| 4 |  405 |   54 | 
| 5 |  506 |   65 | 
| 6 |  104 |   23 | 
+------+---------+------------+ 

のように見えるテーブルを持っています

+------+---------+------------+----------+ 
| a_id | item no | total sold | location | 
+------+---------+------------+----------+ 
| 1 |  101 |   23 | A1  | 
| 2 |  102 |   34 | A2  | 
| 4 |  405 |   54 | NULL  | 
| 5 |  506 |   65 | NULL  | 
| 6 |  104 |   23 | A4  | 
+------+---------+------------+----------+ 

表Aに列「LOCATION」を追加して、tテーブルAのITEM NOに位置値がない場合、LOCATION値はNULL(すなわち、EMPTY)でなければならない。

私は初心者なので、どのように達成するのか分かりません。 UNIONを使用しようとしましたが、適切なクエリを作成できませんでした。

+1

いいえ、あなたは組合を望んでいません。 [参加](https://en.wikipedia.org/wiki/Join_(SQL))が必要です。 –

+0

HTMLコードはどのようにMySQLに関連していますか?あなたはおそらくちょうど通常の外部結合を必要とする、ユニオンは完全に別のものです –

+0

私はスタックオーバーフローで表形式の結果セットを投稿する方法を知りません、私はちょうどテーブルのデータを正しく表示するためにHTMLコードを使用しました –

答えて

1

あなたが探しているものは結合です。具体的には、左外部結合により、左テーブル(TableA)のすべての結果と、一致する右テーブル(TableB)の結果のみを取得します。

参加を指定する場合、あなたはフィールドがテーブル間の関連しているDBを伝えるためにON句を使用します。

SELECT 
    a_id, 
    a.itemno, 
    a.totalsold, 
    b.location 
FROM 
    tableA 
    LEFT OUTER JOIN tableB ON 
     tableA.itemno = tableB.itemno 
+0

その働き。ありがとう –

1

あなたはレコードがないときにヌルを取得したい原因あなたは左(LEFT JOINを使用する必要があります

SELECT a.a_id, a.itemno, a.totalsold, b.location 
    FROM tableA AS a LEFT JOIN tableB AS b ON 
    a.itemno = b.itemno 
関連する問題