代码之家  ›  专栏  ›  技术社区  ›  Daniel M. Faccioli

连接3行2个表并计数

  •  -1
  • Daniel M. Faccioli  · 技术社区  · 7 年前

    我想做一个“ 两个表的其他联接的联接 “。类似这样:

    SELECT users.nombre, users.apellido,users.id, COUNT(pepe.primero) AS Primero, 
       COUNT(pep.segundo) AS Segundo, 
       COUNT(pe.tercero) AS Tercero
    
    FROM users 
    LEFT JOIN ligauruguaya_v AS pepe ON users.id = pepe.primero
    LEFT JOIN ligauruguaya_v AS pep ON users.id = pep.segundo
    LEFT JOIN ligauruguaya_v as pe ON users.id = pe.tercero
    
    WHERE users.categoria < 3 
    GROUP BY users.id
    

    此示例使列显示为多个列结果。

    用3列相同的 你能帮帮我吗?

    表格用户

    id | nombre |apellido
    ------------------
    1|  Julio   |Dutra
    2|  Nelson  |infante
    3|  Pedro   |Polo
    4|  Daniel  |Muñoz
    

    表ligauruguaya\u v

    id| primero|segundo|tercero
     1| 1      |2      |3
     1| 1      |3      |2
     1| 1      |4      |2
    

    后果

     nombre   |Apellido | Primero | Segudno | Tercero
     Julio    |Dutra    | 3       | 0       | 0
     Nelson   |infante  | 0       | 1       | 2
     Pedro    |Polo     | 0       | 1       | 0
     Daniel   |Muñoz    | 0       | 1       | 0
    

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   jose_bacoy    7 年前

    这是获得相同结果的另一种方法:

    SELECT u.nombre, u.apellido,u.id, 
        (select count(1) from ligauruguaya_v  where primero=u.id) AS Primero,
        (select count(1) from ligauruguaya_v  where segundo=u.id) AS Segundo,
        (select count(1) from ligauruguaya_v  where Tercero=u.id) AS Tercero
    FROM users u 
    
    Result:
    nombre  apellido    id  Primero Segundo Tercero
    Julio   Dutra       1   3       0       0
    Nelson  Infante     2   0       1       2
    Pedro   Polo        3   0       1       1
    Daniel  Muñoz       4   0       1       0