Объединяйте таблицы, даже если их нет на другом столе - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть 2 таблицы, и я хочу объединиться, но если строка не существует в других таблицах, результаты не отображаются.

+-------------------+   +-------------------+   
|      TABLE 1|     |   |     Table 2       |
+-------------------+   +-------------------+   
|deviceID|  xxx     |   |deviceID|    yyy   |   
|-------------------|   |-------------------|   
| 1    |  Service 1 |   | 1    |   Asset 1  | 
| 2    |  Service 2 |   | 2    |   Asset 2  |   
| 3    |  Service 3 |   |      |   
+-------------------+   +-------------------+

SQL:

SELECT L.xxx, A.yyy from TABLE1 L JOIN TABLE2 A on L.deviceID=A.deviceID

Результаты показаны deviceID: 1,2 и 3 не отображается, я хочу показать его, даже если он не существует в таблице2

Я пробовал LEFT JOIN и RIGHT JOIN, но не работает

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Вы пробовали простой left join?

SELECT L.xxx, A.yyy
FROM TABLE1 L LEFT JOIN
     TABLE2 A 
     ON L.deviceID = A.deviceID;

Это должно делать то, что вы хотите.

0 голосов
/ 01 апреля 2020

Как показывает этот пример, LEFT JOIN работает просто отлично. Для вас.

Так что это не проблема. cam вы предоставляете пример dbfoddle, где он не работает

схема (MySQL v8.0)

CREATE TABLE Table2 (
  `deviceID` INTEGER,
  `yyy` VARCHAR(7)
);

INSERT INTO Table2
  (`deviceID`, `yyy`)
VALUES
  ('1', 'Asset 1'),
  ('2', 'Asset 2');

CREATE TABLE Table1 (
  `deviceID` INTEGER,
  `xxx` VARCHAR(9)
);

INSERT INTO Table1
  (`deviceID`, `xxx`)
VALUES
  ('1', 'Service 1'),
  ('2', 'Service 2'),
  ('3', 'Service 3');

Query # 1

SELECT
t1.deviceID
,t1.xxx
,t2.yyy
FROM
Table1 t1 LEFT JOIN
Table2 t2 ON t1.deviceID = t2.deviceID;

| deviceID | xxx       | yyy     |
| -------- | --------- | ------- |
| 1        | Service 1 | Asset 1 |
| 2        | Service 2 | Asset 2 |
| 3        | Service 3 |         |

Запрос № 2

SELECT

t1.xxx
,t2.yyy
FROM
Table1 t1 LEFT JOIN
Table2 t2 ON t1.deviceID = t2.deviceID;

| xxx       | yyy     |
| --------- | ------- |
| Service 1 | Asset 1 |
| Service 2 | Asset 2 |
| Service 3 |         |

Просмотр на БД Fiddle

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