как объединить или объединить два набора результатов в mysql?

У меня есть два набора результатов A и B

Таблица A выглядит так:

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

Таблица B выглядит так:

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

Я хочу добиться результата следующим образом

+------+---------+------------+----------+
| 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       |
+------+---------+------------+----------+

Я хочу добавить столбец «LOCATION» в таблицу A и отобразить значение местоположения для каждого элемента, нет, который присутствует в таблице B. Если номер ITEM NO в таблице A не имеет значения местоположения, тогда значение LOCATION должно быть NULL (т.е. ПУСТОЙ).

Поскольку я новичок, я не знаю, как его достичь. Я пытался использовать UNION, но я не смог написать правильный запрос

mysql,

1

Ответов: 2


1 принят

То, что вы ищете, это Join. В частности, Left Outer Join, чтобы получить все результаты из вашей левой таблицы (TableA) и только те результаты из вашей правой таблицы (TableB), которые соответствуют.

При указании соединения вы используете ONпредложение, чтобы сообщить БД, какие поля связаны между таблицами:

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

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
MySQL,
Похожие вопросы