MySQL: левое соединение с группой по записям - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 2 таблицы

Работа

id | job_num | comp_date
-----------------------------
 1 | J01     | NULL
 2 | J02     | NULL
 3 | J03     | NULL
 4 | J04     | NULL
 5 | J05     | NULL

apt

id | job_id | status | apt_date   | user_id
-----------------------------------------
1  | 1      | 1      | 2018-08-09 | 1
2  | 1      | 1      | 2018-08-09 | 2
3  | 2      | 2      | 2018-08-09 | 1

И я пытаюсь получить данные из 2 таблиц с левым соединением, где предел

Запрос

SELECT j.* , a.* FROM `job` j 
LEFT JOIN apt a 
ON j.id = a.job_id AND a.status = 1
Group by a.date

Результат

id | job_num | comp_date| id | job_id | status | apt_date
---------------------------------------------------------
 2 | J02     | NULL     |NULL|NULL    | NULL   | NULL
 1 | J01     | NULL     | 1  |1       | 1      | 2018-06-05

Мне нужны все данные из таблицы заданий и из 1 записи из таблицы apt, где статус 1

Ожидаемый вывод

id | job_num | comp_date| id | job_id | status | apt_date
---------------------------------------------------------
 1 | J01     | NULL     | 1  |1       | 1      | 2018-06-05
 2 | J02     | NULL     |NULL|NULL    | NULL   | NULL
 3 | J03     | NULL     |NULL|NULL    | NULL   | NULL
 4 | J04     | NULL     |NULL|NULL    | NULL   | NULL
 5 | J05     | NULL     |NULL|NULL    | NULL   | NULL

Как группировать по записи?

1 Ответ

0 голосов
/ 09 июня 2018

Наконец я его нашел.

SELECT j.* , a.* FROM `job` j 
LEFT JOIN (SELECT * FROM `apt` WHERE `date` IS NOT NULL AND status =1 GROUP by `date`) as a 
ON j.id = a.job_id 
...