Php 将选择记录与计数结合起来
我这里有一个MySQL查询,非常好用!不过我还有一件事要做。目前,它返回的百分比最高。最高百分比基于特定日期在数据库中生成特定记录类型的发生次数。我希望它还返回具有此高百分比的关联记录的名称。我曾尝试将其合并到下面的查询中,但似乎总是失败。任何关于这方面的建议都会很棒Php 将选择记录与计数结合起来,php,mysql,sql,nested-queries,Php,Mysql,Sql,Nested Queries,我这里有一个MySQL查询,非常好用!不过我还有一件事要做。目前,它返回的百分比最高。最高百分比基于特定日期在数据库中生成特定记录类型的发生次数。我希望它还返回具有此高百分比的关联记录的名称。我曾尝试将其合并到下面的查询中,但似乎总是失败。任何关于这方面的建议都会很棒 SELECT *, COALESCE((acknowledged / generated), 0) AS result FROM ( SELECT ( SELECT COUNT(*)
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 |
+-----------+--------------+--------+----------+
我需要的是:
+-----------+--------------+--------+
| Generated | Acknowledged | Result |
+-----------+--------------+--------+
| 6 | 3 | 0.50 |
+-----------+--------------+--------+
+-----------+--------------+--------+----------+
| Generated | Acknowledged | Result | Name |
+-----------+--------------+--------+----------+
| 6 | 3 | 0.50 | Test Log |
+-----------+--------------+--------+----------+
名称是日志表中的一个字段。再试一次
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
再试一次,这对你来说是很难调试的,如果这不起作用,你需要把所有的东西都放进去,这样我才能帮助你。非常感谢,它完全按照预期工作。哦,对不起,下次我会用的。你能提供sql数据处理工具吗?这样会有帮助吗