Поскольку вы группирование по mr.id
в обоих запросах, я предполагаю, что вы хотите получить результаты, что-то вроде:
mr.id | labor_cnt | mtrial_cnt
--------------------------------
1 | 5 | 3
2 | null | 6
3 | 4 | 2
4 | 3 | null
...
Если это то, что вы ищете, то вы можете объединить запросы с общими выражениями таблицы. Что-то вроде:
WITH labor as (
SELECT mr.id AS mrid, count(ml.id) AS labor_cnt
FROM mreq mr JOIN mlbr ml ON mr.id = ml.mrid
WHERE mr.id IN (1235, 3355)
GROUP BY mr.id),
mtrial as (
SELECT mr.id AS mrid, count(mm.id) AS mtrial_cnt
FROM mreq mr JOIN mmrm mm ON mr.id = mm.mrid
WHERE mr.id in (1235, 3355)
GROUP BY mr.id)
SELECT COALESCE(l.mrid, m.mrid), l.labor_cnt, m.labor_cnt
FROM labor l FULL OUTER JOIN mtrial m ON mrid
ORDER BY mrid;
Edited добавить
Похоже, вы используете MySQL и MySQL не поддерживает общих табличных выражений. MySQL поддерживает подзапросы, так что это может сработать (примечание: я не проверял синтаксис, так как у меня нет доступного экземпляра MySQL):
SELECT COALESCE(l.mrid, m.mrid), l.labor_cnt, m.labor_cnt
FROM
(SELECT mr.id AS mrid, count(ml.id) AS labor_cnt
FROM mreq mr JOIN mlbr ml ON mr.id = ml.mrid
WHERE mr.id IN (1235, 3355)
GROUP BY mr.id) AS labor
FULL OUTER JOIN
(SELECT mr.id AS mrid, count(mm.id) AS mtrial_cnt
FROM mreq mr JOIN mmrm mm ON mr.id = mm.mrid
WHERE mr.id in (1235, 3355)
GROUP BY mr.id) AS mtrial
ON mrid
ORDER BY mrid;
что вы называете комбайном? .. как результаты ищут оба вопроса? –