SQL查询语句????

夏德帝 2012-12-14 02:14:46
表A
a_id,a_nam,a_age,class_id,groud_id
1,z1,20,1,1
2,z2,21,1,1
3,z3,22,1,1
4,z4,20,2,1
5,z5,21,2,1
6,z6,22,3,2
……
表B
b_id,a_id,b_scroe,manage_id
1,1,60,2
2,1,30,2
3,2,40,3
……
Select a.a_name, a.a_age, sum(a.b_scroe) from A left outer jion B on A.a_id = B.a_id where a.class_id = 1 AND a.groud_id = 1 and (b.manage_id =2 OR b.manage is null) group by a.a_name, a.a_age

现在查询出来的问题是A表符合a.class_id = 1 AND a.class_id = 1条件的本来有26条记录只显示出21条记录。把条件改为a.class_id = 2 AND a.class_id = 1数据库中有26条符合的记录只显示出11条,把条件改为a.class_id = 3 AND a.class_id = 1数据库中有26条符合条件的记录显示0条。

应该怎样修改SQL语句,同样的查询语句为什么条件更改后在表中有同样数量的记录显示的数据还不同??
...全文
108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏德帝 2012-12-14
  • 打赏
  • 举报
回复
有解决的办法没呀
zhengnan2012 2012-12-14
  • 打赏
  • 举报
回复
你是的是classid与groupid吧。 两个表的连接的结果不一定等于某个表的结果。是笛卡积的关系。
我的tcl 2012-12-14
  • 打赏
  • 举报
回复
这个条件and (b.manage_id =2 OR b.manage is null) 也会去掉一些数据的 而且 a.class_id = 1 AND a.class_id = 1应该是a.class_id = 1 AND a.groud_id = 1吧 这不很正常么 and是且的意思 你要显示26条 那就把and (b.manage_id =2 OR b.manage is null) 去掉好了
夏德帝 2012-12-14
  • 打赏
  • 举报
回复
A表中现有符合a.class_id = 1 AND a.class_id = 1条件的有26条记录 符合a.class_id = 2 AND a.class_id = 1条件的有26条记录 符合a.class_id = 3 AND a.class_id = 2条件的有26条记录 B表中符合 A.a_id = B.a_id b.manage_id =2条件的有21条记录 符合A.a_id = B.a_id b.manage_id =3条件的有11条记录 目的是显示26条记录,B表没数据的时候显示正常,B表有数据后就显示不正常了???
夏德帝 2012-12-14
  • 打赏
  • 举报
回复
Select a.a_name, a.a_age, sum(a.b_scroe) from A left outer jion B on A.a_id = B.a_id and (b.manage_id =2 OR b.manage is null) where a.class_id = 1 AND a.groud_id = 1 group by a.a_name, a.a_age 尽然这样查询就可以正常显示了,不知道为啥??

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧