首先准备四张表a、b、c、d,
-------------------------------- a | b | c | d a b | a c | a d | d e 1 1 | 1 1 | 1 a | a 1 2 2 | 1 3 | 2 b | b 2 3 4 | 1 4 | 3 c | c 3 4 6 | 2 1 | 4 d | d 4 --------------------------------
下面我们需要用一条sql语句将a表所有的列,b表对与a表a字段相关联的列求count,通过c表,将d表与a表关联起来,得到的结果如下:
1 1 3 1 2 2 1 2 3 4 0 3 4 6 0 4
mysql语句解决:
select a.a,a.b,ifnull(c,0) as c,d.a from (select 1 as a,2 as b union allselect 2 as a,2 as b union allselect 3 as a,4 as b union allselect 4 as a,6 as b) as a left outer join (select a,count(a) as c from(select 1 as a,3 as c union allselect 1 as a,3 as c union allselect 1 as a,3 as c union allselect 2 as a,3 as c ) b group by a) as bon a.a=b.a join (select 1 as a,'a' as d union allselect 2 as a,'b' as d union allselect 3 as a,'c' as d union allselect 4 as a,'d' as d ) as c on a.a=c.a join(select 1 as a,'a' as d union allselect 2 as a,'b' as d union allselect 3 as a,'c' as d union allselect 4 as a,'d' as d ) as don d.d=c.d