Как я могу получить данные `NULL` из этого соединения? - PullRequest
0 голосов
/ 28 ноября 2018

Я бы хотел объединить две таблицы:

t_act
ID_ACT   ACT
1        ACT1
2        ACT2
3        ACT3
4        ACT4
5        ACT5

t_work
NO   ID_WORK   ID_ACT   ACT
1         A         1   ACT1
2         A         3   ACT3

Вывод, который я искал:

NO    ID_WORK    ID_ACT    ACT
1           A         1    ACT1
2           A         2    NULL
3           A         3    ACT3
3           A         4    NULL
4           A         5    NULL

Я использовал ВЛЕВО или ВПРАВО, но это не так;произвел желаемый вывод.

Мой запрос: SELECT * FROM t_work LEFT OUTER JOIN t_act ON t_work.ID_ACT = t_act.ID_ACT

1 Ответ

0 голосов
/ 28 ноября 2018

Хорошо выглядит:

mysql> select * from t_act;
+--------+------+
| ID_ACT | ACT  |
+--------+------+
|      1 | ACT1 |
|      2 | ACT2 |
|      3 | ACT3 |
|      4 | ACT4 |
|      5 | ACT5 |
+--------+------+
5 rows in set (0.00 sec)

mysql> select * from t_work;
+----+---------+--------+------+
| NO | ID_WORK | ID_ACT | ACT  |
+----+---------+--------+------+
|  1 | A       |      1 | ACT1 |
|  2 | A       |      3 | ACT3 |
+----+---------+--------+------+
2 rows in set (0.00 sec)

ВЫХОД:

mysql> select a.NO,a.ID_WORK, b.ID_ACT, a.ACT from t_act as b left     
join t_work as a using  (ID_ACT) order by ID_ACT;
+------+---------+--------+------+
| NO   | ID_WORK | ID_ACT | ACT  |
+------+---------+--------+------+
|    1 | A       |      1 | ACT1 |
| NULL | NULL    |      2 | NULL |
|    2 | A       |      3 | ACT3 |
| NULL | NULL    |      4 | NULL |
| NULL | NULL    |      5 | NULL |
+------+---------+--------+------+
5 rows in set (0.02 sec)

Но я не уверен насчет столбца NO и ID_WORK в желаемом выводе.

ID_ACT 2 отсутствует в таблице t_work.Таким образом, у вас будет NULL в столбцах NO / ID_WORK в желаемом выводе.Вы уверены, что у вас будут ЗНАЧЕНИЯ на этих столбцах ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...