在mysql查询中需要帮助

时间:2012-02-26 14:11:58

标签: php mysql

我有三个表,一个包含有关客户端的信息(名称,用户名),另一个表包含对他的汽车执行的服务(从服务获得的点数),服务制定的表和一个与公司的表,表示客户工作(姓名,地点)。

我正在尝试进行查询,以便将客户工作的公司,客户本人以及获得的所有积分的总和汇总在一起。我已经尝试了几种方法,但都失败了。我想显示客户信息,即使它没有任何积分。

这是我已经尝试过的

SELECT *FROM client c
         INNER JOIN company b ON c.company_idcompany  = b.idcompany 
         INNER JOIN (select sum(pointos) as pointos From services) d

SELECT *FROM client c
        INNER JOIN company b ON c.company_idcompany  = b.idcompany 
        INNER JOIN service d ON c.idclient = d.client_idclient

2 个答案:

答案 0 :(得分:1)

请提供更多表结构数据(例如创建脚本)。

我认为问题是您必须在加入时使用LEFT JOIN,并且您没有在第一个查询的第二个连接语句中提供任何“连接信息”。

答案 1 :(得分:1)

您需要对聚合查询进行LEFT JOIN。如果INNER JOIN,它将仅返回在服务中具有条目的行。没有服务的客户将不会被退回。试试这个

SELECT *FROM client c
     INNER JOIN company b ON c.company_idcompany  = b.idcompany 
     LEFT JOIN (select client_idclient,sum(pointos) as pointos From services group by client_idclient) d on c.idclient=d.client_idclient

如果你需要零而不是NULL,你可以使用IFNULL来转换点的总和。