MySql中的sql查询语句

数据库例:表userInfo(ID,name) ,数据:1,菲菲;2,历历;3,莉莉 表typeInfo(ID,typeName), 数据:1,水果;2,,蔬菜; 表target(id,userID,typeID,num,dateTIme),数据:
1,1,1,23,2011-04-03;
2,1,2,22,2011-04-03;
3,1,1,25,2011-03-03;
4,1,2,30,2011-03-03;
5,3,1,40,2011-04-03;
6,3,2,50,2011-04-03;

要实现的效果:
2011-04 菲菲 水果 23
2011-04 菲菲 蔬菜 22
2011-04 历历 水果
2011-04 历历 蔬菜
2011-04 莉莉 水果 40
2011-04 莉莉 蔬菜 50
2011-03 菲菲 水果 25
2011-03 菲菲 蔬菜 30
2011-03 历历 水果
2011-03 历历 蔬菜
2011-03 莉莉 水果
2011-03 莉莉 蔬菜

第1个回答  2011-04-21
SELECT substr(target.dateTIme, 1, 7),
userInfo.name,
typeInfo.typeName,
target.num
FROM target
LEFT JOIN userInfo on userInfo.ID = target.userID
LEFT JOIN typeInfo ON typeInfo.ID = target.typeID
ORDER BY substr(target.dateTIme, 1, 7) DESC, userInfo.ID, typeInfo.ID
即可追问

有点问题哦,查询出来的效果与要求的不一样。 要显示出每个月每个员工的所有记录,不论该员工每个月在target表中是否有数据,都要查询出来。 最后查询的结果数据量应该是
员工数量*类型数量*月数

追答

SELECT substr(target.dateTIme, 1, 7),
userInfo.name,
typeInfo.typeName,
SUM(target.num)
FROM target
LEFT JOIN userInfo on userInfo.ID = target.userID
LEFT JOIN typeInfo ON typeInfo.ID = target.typeID
GROUP BY substr(target.dateTIme, 1, 7), userInfo.name, typeInfo.typeName
ORDER BY substr(target.dateTIme, 1, 7) DESC, userInfo.ID, typeInfo.ID

追问

还是不行。。。。能截个图看看你做的结果么

第2个回答  2011-04-21
select m.da,u.name,m.typename,m.num
from
(select substring(t.dateTIme,1,7) da,y.typeName typename,t.num num,t.userID userID from target t join typeInfo y on t.typeID=y.ID)
m right join userInfo U on m.userID=U.ID追问

查询出来的数据 与 要求的效果不一样啊

追答

select distinct substring(t.dateTIme,1,7) da,u.name name,y.typeName typeName,0 num
from typeInfo y ,userInfo u ,target t
where u.ID not in(select userID from target)
union all
select m.da,u.name,m.typename,isnull(m.num,'0') num
from
(select substring(t.dateTIme,1,7) da,y.typeName typename,t.num num,t.userID userID
from target t join typeInfo y on t.typeID=y.ID)
m join userInfo U on m.userID=U.ID
order by da,u.name

追问

还是达不到效果。。。