mysql - mysql 查询中的多重分组。组连接?通过...分组?内连接?我哪里错了?

标签 mysql join group-by sum

我发现很难找到与我想要实现的目标类似的示例。我有3张 table 。我想从一张表中获取链接 ID 号。我想从另一个表中找到相同的 ID,并在该表中添加与第一个表中的 ID 号匹配的另一列数字。然后在第三个表(即文本)上,我想将 ID 与主 ID 号匹配的所有文本分组在一起......并一次性返回所有这些。我的图表应该表明我的意思:

因此,有 2 个查询将自行返回部分结果,但我正在努力将其构建为 1 个查询。

    SELECT ticket_charges.ticket_id
         , sum(ticket_charges.charge_time) AS Seconds
    FROM
      ticket_charges
    LEFT OUTER JOIN tickets
    ON ticket_charges.ticket_id = tickets.id
    GROUP BY
      ticket_charges.ticket_id
    , tickets.id

票证 ID 3 的 77 和 937 已正确相加!!

    SELECT tickets.id AS `Ticket Number`
         , left(tickets_messages.message, 500) AS `Ticket Message`
    FROM
      tickets
    INNER JOIN tickets_messages
    ON tickets.id = tickets_messages.id
    GROUP BY
      tickets_messages.ticket_id
    , tickets.id

消息已正确连接在一起。

我已经尝试过对消息进行一些串联、选择中的选择、不同的分组方法、一些总和等。但似乎无法得到结果,而我无法正确返回结果将两个查询作为 1 个单个查询。要么来自“charge_time”的连接数字非常错误并且与任何内容都不匹配,要么我最终在“charge_time”上得到数百条“消息”和奇怪的数字

仅供引用..如果我尝试这样做,我会得到“子查询返回超过 1 行”,但这是我认为我应该做的。

    SELECT ticket_charges.ticket_id
        , sum(ticket_charges.charge_time) AS Seconds
    FROM
      ticket_charges
    LEFT OUTER JOIN tickets
    ON ticket_charges.ticket_id = tickets.id
       Where (SELECT left(tickets_messages.message, 500)
              FROM  
               tickets    
              INNER JOIN tickets_messages
              ON tickets.id = tickets_messages.id
              GROUP BY
               tickets.id)
    GROUP BY
     ticket_charges.ticket_id
    , tickets.id

最佳答案

如果您确实需要通过单个查询来完成此操作,解决方案是在其中一个关节中执行子查询。

SELECT t.id, t.person_id, SUM(tc.charge_time), mc.concat
FROM tickets t
INNER JOIN tickets_charges tc ON tc.ticket_id = t.id
INNER JOIN (
    SELECT ticket_id, GROUP_CONCAT(message SEPARATOR ' ') as concat
    FROM tickets_messages
    GROUP BY ticket_id) AS mc
  ON mc.ticket_id = t.id
GROUP BY t.id

关于mysql - mysql 查询中的多重分组。组连接?通过...分组?内连接?我哪里错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826196/

相关文章:

mysql - fatal error : Call to undefined function mysqli_init()

php - 如果没有 GROUP BY 子句,没有 GROUP 列的 MySQl 错误 : #1140 - Mixing of GROUP columns (MIN(), MAX(),COUNT(),...) 是非法的

javascript - PHP Javascript Mysql 插入

MySQL 查询返回、Schema_Name、Table_NAme、Count、Size_of_Table、Primary_Key 和 Auto_Increment_Key

python - 在 Python 中对两个文本文件进行类似 SQL 的 JOIN,是否有内置方法?

mysql - 未除以数字的行数

python - 获取 pandas DataFrame 中每个组的前 N ​​个最大行

python - 在数据框中对一列进行求和,同时保留其他列

具有聚合函数的 SQL GROUP BY CASE 语句

python - pandas 将 asof 与多个匹配项合并