#mysql
#mysql
Вопрос:
У меня есть такие таблицы:
job_status_air
status_id | status
----------- ------------
1 | AIRPORT IN
2 | AIRPORT OUT
job_status_air_pkg
id | status_id | package_no
---- ------------ ------------
1 | 1 | pkg1
2 | 1 | pkg2
3 | 1 | pkg3
4 | 2 | pkg1
Я использую приведенный ниже запрос:
select package_no ,
(case when job_status_air.status = "AIRPORT IN" then job_status_air_pkg.id end) AIRPORTIN,
(case when job_status_air.status = "AIRPORT OUT" then job_status_air_pkg.id else 0 end) AIRPORTOUT
FROM job_status_air_pkg
LEFT JOIN job_status_air ON (job_status_air.status_id = job_status_air_pkg.status_id)
WHERE job_status_air.mawb = 'awb1' or hawb = 'awb1'
Я не могу добиться приведенного ниже результата:
package_no | AIRPORT IN | AIRPORT OUT
----------- ------------ -------------
pkg1 | 1 | 4
pkg2 | 2 |
pkg3 | 3 |
Кто-нибудь может мне помочь, пожалуйста?
Ответ №1:
вам необходимо применить агрегацию и группировку по
select package_no ,
max(case when job_status_air.status = "AIRPORT IN" then job_status_air_pkg.id end) AIRPORTIN,
max(case when job_status_air.status = "AIRPORT OUT" then job_status_air_pkg.id else 0 end) AIRPORTOUT
FROM job_status_air_pkg
LEFT JOIN job_status_air ON (job_status_air.status_id = job_status_air_pkg.status_id)
WHERE job_status_air.mawb = 'awb1' or hawb = 'awb1'
group by package_no