现有2个表:
A表:
id c_name
1 a客户
2 b客户
3 c客户
====================
B表(customer_id就是a表的id):
id customer_id project_type
1 1 JH
2 1 HT
3 1 FW
4 1 HT
5 2 JH
......
====================================
C表(customer_id就是a表的id)
id  customer_id other
1   1            xxxx
2   1            yyy
3   2            zzzzzz
=================================
D表(customer_id就是a表的id)
id  customer_id other
1   1            xxxx
2   1            yyy
3   2            zzzzzz
4   2            wwww
=================================
现需要做联合查询,得出类似与下面的数据列
客户名称 JH HT FW C表统计数  D表统计数
a客户 1个 2个 1个 2个         2个
b客户 1个 0个 0个 1个         2个
=======================================
也就是说不单单是要统计客户的 project_type 数量,而且还要得出每个类型(已固定只有三种类型)的具体数量 ,以及C表和D表中的统计数,这个sql应该怎么写??请大大门赐教啊~~~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    select a.c_name,
    sum(if(project_type='JH',1,0)) AS JH,
    sum(if(project_type='HT',1,0)) AS HT,
    sum(if(project_type='FW',1,0)) AS FW,
    COUNT(*) AS 合计,
    (SELECT COUNT(*) FROM C WHERE a.id=customeR_ID) AS C表统计数,
    (SELECT COUNT(*) FROM D WHERE a.id=customeR_ID) AS D表统计数from a inner join b on a.id=b.customer_id
    group by a.c_name
      

  2.   

    感谢WWWWA,数据基本可以出来,但如果b表中没有a表的某个客户的记录,则不能显示a表中的该记录,如上面例子中的c客户,在其它三个表中都没有customer_id的记录,那么显示的结果就没有c客户,我希望的是显示c客户,只是统计的值为0