查询中的多个左联接返回错误计数

时间:2019-08-08 14:49:09

标签: mysql

当我使用多个LEFT JOINS获得所需的结果时,无法填充精确的计数,如下所示

我希望获取每个“经理_1”拥有的“从t2起的车票数量”的总数以及他们的姓名

仅供参考:表2仅具有工程师的别名

尝试使用内部,右侧和左侧外部连接来获得所需的结果,但无济于事

表1-t1

            +-----------+--------+------------------+-----------------+-----------------+
            | role      | alias  | name             | manager_1_alias | manager_2_alias |
            +-----------+--------+------------------+-----------------+-----------------+
            | engineer  | tommy  | tommy gun        | tim             | gegard          |
            +-----------+--------+------------------+-----------------+-----------------+
            | engineer  | sean   | sean penn        | ricky           | flo             |
            +-----------+--------+------------------+-----------------+-----------------+
            | manager_1 | tim    | tim robbins      |                 |                 |
            +-----------+--------+------------------+-----------------+-----------------+
            | manager_2 | gegard | gegard mousasi   |                 |                 |
            +-----------+--------+------------------+-----------------+-----------------+
            | manager_1 | ricky  | ricky hatton     |                 |                 |
            +-----------+--------+------------------+-----------------+-----------------+
            | manager_2 | flo    | floyd mayweather |                 |                 |
            +-----------+--------+------------------+-----------------+-----------------+

表2-t2

            +---------------+-------+
            | ticket_number | alias |
            +---------------+-------+
            | 1234          | tommy |
            +---------------+-------+
            | 4567          | sean  |
            +---------------+-------+
            | 8910          | tommy |
            +---------------+-------+
            | 4321          | tommy |
            +---------------+-------+
            | 4422          | sean  |
            +---------------+-------+
            | 2288          | tommy |
            +---------------+-------+

当前查询

            SELECT
              j2.name
              count(t2.ticket_number) 
            FROM 
              t2 
              LEFT JOIN t1 AS j1 ON t2.alias = j1.alias 
              LEFT JOIN t1 AS j2 ON j1.manager_1_alias = j2.alias 
              LEFT JOIN t1 AS j3 ON j1.manager_2_alias = j3.alias 
            group by 
              j1.manager_1_alias

所需结果

            +----------------+------------------+
            | manager_1 name | total_no_tickets |
            +----------------+------------------+
            | tim robbins    | 4                |
            +----------------+------------------+
            | ricky hatton   | 2                |
            +----------------+------------------+

2 个答案:

答案 0 :(得分:0)

检查

      Stages: 
        -
          Name: ApproveDeployment
          Actions: 
            - 
              Name: ApproveDeployment
              ActionTypeId: 
                Category: Approval 
                Owner: AWS 
                Version: 1
                Provider: Manual
              Configuration:
                CustomData: !Ref ManualApprovalCustomMessage
                ExternalEntityLink: !Ref ExternalEntityLink
                NotificationArn: !Ref NotificationArn

答案 1 :(得分:0)

以下各项是否可以满足您的需求?

这是t1与自身的连接,以查找与工程师的经理1别名相关联的名称,然后与t2一起将工程师别名映射到他们的工单

SELECT tt1.name AS manager_1_name, 
       count(t2.ticket_number) AS total_no_tickets 
FROM t1
JOIN t1 AS tt1 
   ON t1.manager_1_alias = tt1.alias 
LEFT JOIN t2 
   ON t1.alias = t2.alias 
GROUP BY tt1.name

编辑:删除了两个表别名,使其更易于阅读