Объединение двух SQL запросов к одной таблице - MySQL

Формулировка задачи:

Доброго времени суток. Возникла проблема с SQL запросом, раньше с таким не сталкивался. Имеется два запроса:
SELECT manager_vydacha, COUNT(*)
FROM raw
WHERE office IN ('1', '2', '3', '4') AND date_podgotovka BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY manager_vydacha
и
SELECT manager_vydacha, COUNT(*)
FROM raw
WHERE office IN ('1', '2', '3', '4') AND date_vydacha BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY manager_vydacha
Каждый из них возвращает таблицу вида:
+-----------------+----------+
| manager_vydacha | COUNT(*) |
+-----------------+----------+
| Иванов          | 100      |
+-----------------+----------+
| Петров          | 20       |
+-----------------+----------+
| Сидоров         | 70       |
+-----------------+----------+
Требуется объединить эти два запроса в один, чтобы он возвращал таблицу вида:
+-----------------+----------+----------+
| manager_vydacha | COUNT(*) | COUNT(*) |
+-----------------+----------+----------+
| Иванов          | 100      | 80       |
+-----------------+----------+----------+
| Петров          | 20       | 20       |
+-----------------+----------+----------+
| Сидоров         | 70       | 65       |
+-----------------+----------+----------+
Ни как не пойму, как это сделать. Пробовал что-то вроде:
SELECT (
    SELECT COUNT(*)
    FROM raw
    WHERE date_podgotovka BETWEEN '2012-01-01' AND '2012-12-31'
), (
    SELECT COUNT(*)
    FROM raw
    WHERE date_vydacha BETWEEN '2012-01-01' AND '2012-12-31'
)
FROM raw
WHERE office IN ('1', '2', '3', '4')
GROUP BY office
Пробовал делать подзапрос в FROM (уже не могу найти пример кода), и прочие варианты, но всегда неудача, возвращается-то полная сумма всех полей, то вообще чёрти что. Помогите пожалуйста.


textual

Код к задаче: «Объединение двух SQL запросов к одной таблице - MySQL»

SELECT T1.manager_vydacha, T1.cnt1, T2.cnt1
FROM
  (SELECT manager_vydacha, COUNT(*) AS cnt1
   FROM raw
   WHERE office IN ('1', '2', '3', '4') AND date_podgotovka BETWEEN '2012-01-01' AND '2012-12-31'
   GROUP BY manager_vydacha
   ) T1,
  (SELECT manager_vydacha, COUNT(*) AS cnt1
   FROM raw
   WHERE office IN ('1', '2', '3', '4') AND date_vydacha BETWEEN '2012-01-01' AND '2012-12-31'
   GROUP BY manager_vydacha
  ) T2
WHERE T2.manager_vydacha = T1.manager_vydacha
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

10   голосов, оценка 3.900 из 5

Источник