首先准备四张表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 all
select 2 as a,2 as b union all
select 3 as a,4 as b union all
select 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 all
select 1 as a,3 as c union all
select 1 as a,3 as c union all
select 2 as a,3 as c ) b group by a) as b
on a.a=b.a
join
(select 1 as a,'a' as d union all
select 2 as a,'b' as d union all
select 3 as a,'c' as d union all
select 4 as a,'d' as d ) as c
on a.a=c.a
join(select 1 as a,'a' as d union all
select 2 as a,'b' as d union all
select 3 as a,'c' as d union all
select 4 as a,'d' as d ) as d
on d.d=c.d