我有一个查询,其中我得到了公司列表
SELECT S.FileB64 AS ImgB64, E.* FROM dbempresas E
LEFT JOIN systorage S ON S.id = E.Logo_100
ORDER BY E.Nombre;
RESULTADO:
id | RFC | Nombre
---+--------------+----------------------------------
14 | AAA010101AAA | ACCEM SERVICIOS EMPRESARIALES SC
15 | BBB010101BBB | CORPORACION ACME
16 | CCC010101CCC | INDUSTRIAS KORD
到目前为止一切顺利,但我想添加每家公司有多少个分支机构,给我这样的结果:
id | RFC | Nombre | Sucursales
---+--------------+-------------------------------------+--------------
14 | AAA010101AAA | ACCEM SERVICIOS EMPRESARIALES SC | 2
15 | BBB010101BBB | CORPORACION ACME | 1
16 | CCC010101CCC | INDUSTRIAS KORD | 1
为了达到上述目的,我这样做了:
SELECT S.FileB64 AS ImgB64, ES.id, E.* FROM dbempresas E
LEFT JOIN systorage S ON S.id = E.Logo_100
LEFT JOIN dbempresas_sucursales ES ON ES.IdEmpresa = E.id
ORDER BY E.Nombre;
RESULTADO:
id | RFC | Nombre | ES.id
---+--------------+-------------------------------------+--------------
14 | AAA010101AAA | ACCEM SERVICIOS EMPRESARIALES SC | 13
14 | AAA010101AAA | ACCEM SERVICIOS EMPRESARIALES SC | 16
15 | BBB010101BBB | CORPORACION ACME | 17
16 | CCC010101CCC | INDUSTRIAS KORD | 18
我知道COUNT()
我可以计算记录,但我不知道如何在同一个查询中做到这一点。
如何防止id
公司重蹈覆辙,给我想要的结果?
这些是我在其中进行查询的表:
+------------------------------+ +-------------------------------+
| dbEmpresas | | dbEmpresas_Sucursales |
+-------------+----------------+ +-------------+-----------------+
| id | bigint(20) | | id | bigint(20) |
| RFC | varchar(15) | | IdEmpresa | bigint(20) |
| Nombre | varchar(100) | | Nombre | varchar(100) |
| Logo_100 | bigint(20) | +-------------+-----------------+
+-------------+----------------+
+-----------------------------+
| syStorage |
+-----------+-----------------+
| id | bigint(20) |
| FileB64 | text |
+-----------+-----------------+
您真正缺少的唯一一件事是您
GROUP BY
为所有不是来自表的列执行 adbEmpresas_Sucursales
。有了它,现在您可以COUNT
正确使用该功能而不会出现错误结果。