mysql - 计算一对多关系中存在多少

标签 mysql sql

我正在处理一个查询,我需要在其中添加一个任务名称的列,其中包含存在于一对多关系中的许多数量

这是我的查询

SELECT 
    e.full_name AS fullName,
    t.issue AS issue,
    CASE t.state
        WHEN 'open' THEN 'open'
        WHEN 'pending' THEN 'In progress'
        WHEN 'closed' THEN 'closed'
    END AS status,
    CASE t.scheduled
        WHEN TRUE THEN 'scheduled'
        WHEN FALSE THEN 'non-scheduled'
    END AS scheduled,
    d.name AS device,
    DATE(t.date_created) AS dateCreated,
    DATE(t.last_updated) AS lastUpdate
FROM
    tickets t
        INNER JOIN
    employees e ON t.employee_id = e.id
        INNER JOIN
    devices d ON d.id = t.device_id
WHERE
    MONTHNAME(t.date_created) = 'August'
ORDER BY dateCreated DESC

这是我工作的方案http://sqlfiddle.com/#!9/39bf3e/1

我尝试添加countsgroup by 但此时我在猜测

我期待这样的结果

enter image description here

感谢您的帮助

最佳答案

像这样使用派生表:

SELECT ...
       TotalTasks --Add the count column to your select
FROM ticket t
JOIN (SELECT ticked_id, COUNT(1) as TotalTasks
      FROM tasks
      GROUP BY ticked_id) ta ON t.id = ta.ticked_id
...rest of query

这是您的 fiddle整个查询

这里的概念是在连接回一个 表之前,先对多个 表进行聚合。这可确保 1-1 联接并最好地防止不必要的重复。

关于mysql - 计算一对多关系中存在多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948549/

相关文章:

sql - Oracle View 查询,基于一个条件检索数据,但未检索到一行

MySQL 工作台不工作

php - Eloquent 查询构建器 if 子句实现

Python 字典 : there a speed difference between matching a numeric key over a word in python?

PHP/SQL - 获取另一列的总和

python - 从 Python 执行存储过程

c# - 在 C# 中对部分 SQL 进行 Lexing

python - sqlalchemy.exc.IntegrityError - mySql - 自动增量和数据库存储中的主键错误

sql - 我们如何将所有 PostgreSQL 输出(包括错误)写入日志文件?

java - Java 中的动态 SQL 查询