Объединить ВЫБОР записи с 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
Другие вопросы по тегам