Объединить ВЫБОР записи с COUNT
У меня есть этот запрос MySQL здесь, который работает БОЛЬШОЙ! Но есть еще одна вещь, которую мне нужно сделать. В настоящее время он возвращает самый высокий процент обратно. Наибольший процент основан на количестве вхождений, которые были созданы в базе данных определенного типа в конкретную дату. Я хочу, чтобы он также возвращал имя связанной записи с таким высоким процентом. Я попытался включить его в запрос ниже, но, кажется, всегда терпит неудачу. Любой совет по этому поводу был бы потрясающим.
SELECT *, COALESCE((acknowledged / generated), 0) AS result
FROM (
SELECT (
SELECT COUNT(*)
FROM logs
INNER JOIN generated_logs
ON generated_logs.log_fk = logs.log_pk
WHERE logs.department_fk = ?
AND DATE(generated_logs.generated_time) = ?
) AS generated, (
SELECT COUNT(generated_logs.log_fk) AS magnitude
FROM logs
INNER JOIN generated_logs
ON generated_logs.log_fk = logs.log_pk
WHERE logs.department_fk = ?
AND generated_logs.acknowledged = 1
AND DATE(generated_logs.generated_time) = ?
GROUP BY generated_logs.log_fk
ORDER BY magnitude DESC
LIMIT 1
) AS acknowledged ) AS result
Токовый выход:
+-----------+--------------+--------+
| Generated | Acknowledged | Result |
+-----------+--------------+--------+
| 6 | 3 | 0.50 |
+-----------+--------------+--------+
Что мне нужно это:
+-----------+--------------+--------+----------+
| Generated | Acknowledged | Result | Name |
+-----------+--------------+--------+----------+
| 6 | 3 | 0.50 | Test Log |
+-----------+--------------+--------+----------+
Имя - это поле в таблице журналов.
1 ответ
Решение
Еще один раз...
SELECT *, COALESCE((a.magnitude / g.generated), 0) AS result
FROM
(
SELECT COUNT(*) AS generated
FROM logs
INNER JOIN generated_logs
ON generated_logs.log_fk = logs.log_pk
WHERE logs.department_fk = ?
AND DATE(generated_logs.generated_time) = ?
) AS g,
(
SELECT COUNT(generated_logs.log_fk) AS magnitude, logs.name
FROM logs
INNER JOIN generated_logs
ON generated_logs.log_fk = logs.log_pk
WHERE logs.department_fk = ?
AND generated_logs.acknowledged = 1
AND DATE(generated_logs.generated_time) = ?
GROUP BY generated_logs.log_fk
ORDER BY magnitude DESC
LIMIT 1
) AS a