日期:2014-05-17  浏览次数:20710 次

昨天问题没写清楚,再发帖求助写sql
问题:
有两张表 A1(zdmc,zdz,sort) zdmc --字段名称 对应第二张表中的字段如xq,tq
  zdz --字段值 对应第二张表中的字段对应的值
  sort -- 排序用的
  A2(id,xq,tq) id -- id 无序的
  xq -- 星期
  tq -- 天气
  A1表中的数据('xq','星期一',1),('xq','星期二',2)...('xq','星期天',7),('tq','晴',1),('tq','雨',2),('tq','大风',3)
  A2中数据 :(1,'星期一','晴'),(2,'星期天','晴'),(3,'星期六','雨'),(4,'星期一','雨'),
  (5,'星期二','晴'),(6,'星期一','雨'),(7,'星期三','晴'),(8,'星期四','雨'),
  (9,'星期五','雨')

 请问怎么得出下面的纪录
星期 天气 总数
星期一 晴 1  
星期一 雨 2  
星期一 大风 0
星期二 晴 1  
星期二 雨 0  
星期二 大风 0  
星期三 晴 1  
星期三 雨 0  
星期三 大风 0  
星期四 晴 0  
星期四 雨 1  
星期四 大风 0  
星期五 晴 0  
星期五 雨 1  
星期五 大风 0
星期六 晴 0  
星期六 雨 1
星期六 大风 0
星期天 晴 1  
星期天 雨 0  
星期天 大风 0
或者 -----------------
天气 星期 总数
晴 星期一 。。
晴 星期二 。。 
...
晴 星期日 。。

雨 星期一 。。
雨 星期二 。。 
...
雨 星期日 。。

大风 星期一 。。
大风 星期二 。。 
...
大风 星期日 。。



------解决方案--------------------
SQL code
select xingqi 星期, tianqi 天气, days 总数 from(
select xingqi,tianqi,sort1,sort2, count(id) days from
  (select a1_1.zdz xingqi, a1_2.zdz tianqi, a1_1.sort sort1, a1_2.sort sort2
     from A1 a1_1, A1 a1_2 where a1_1.zdmc='xq' and a1_2.zdmc = 'tq') a1_join
  left join a2 on a1_join.xingqi=a2.xq and a1_join.tianqi=a2.tq
  group by xingqi,tianqi, sort1, sort2
) order by sort1, sort2;