求sql语句一条(sqlsever)

jiaming0 2011-08-19 09:04:46
我建了三张表进行连接操作 但是得不出想要的结果,请高手们帮帮忙
第一个表tb_level

LevelId LevelName
1 轻
2 中
3 重

第二张表tb_Danger
DangerId UserId LeveLId
1 4 1
2 4 2
3 4 3
4 2 1
5 2 1
6 2 2
7 2 2
8 5 3
9 2 3
10 3 1
11 3 1
12 3 1
13 3 2
14 3 2
15 3 2
16 3 3
17 3 3
18 3 3
s
第三张表bt_User
UserId UserName
2 y
3 z
4 c
5 q

这是我的sql语句

SELECT LevelName '程度',UserName '姓名',COUNT(LevelName) as '次数'
FROM tb_Danger
LEFT JOIN tb_Level ON tb_Danger.LevelId = tb_Level.LevelId
LEFT JOIN tb_Users ON tb_Danger.UserId = tb_Users.UserId --AND Limit = 1
GROUP BY LevelName,UserName order by LevelName desc

运行出来后y,z,c的“程度”都有“轻”,“中”,“重”三个而q只有一个“重”的程度,其他两个没值不显示,怎样写sql语使q的“轻”,“中”像y,z,c一样显示(没值以0显示)
...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-08-19
  • 打赏
  • 举报
回复
SELECT
isnull(LevelName,'') '程度',isnull(UserName,'') '姓名',isnull(COUNT(LevelName),'') as '次数'
FROM
tb_Danger
LEFT JOIN
tb_Level ON tb_Danger.LevelId = tb_Level.LevelId
FULL JOIN
tb_Users ON tb_Danger.UserId = tb_Users.UserId --AND Limit = 1
GROUP BY
LevelName,UserName order by LevelName desc
chuanzhang5687 2011-08-19
  • 打赏
  • 举报
回复
把帖子转到技术版,把分分给呆呆
Jimlyli 2011-08-19
  • 打赏
  • 举报
回复
精神上支持
怪众生太美丽 2011-08-19
  • 打赏
  • 举报
回复

兄啊,你弄到非技术版 难怪没人来了..没技术分拿哈哈哈...
怪众生太美丽 2011-08-19
  • 打赏
  • 举报
回复

少了个UNION ALL:
SELECT 4,'c'
SELECT 5,'q'
换成:
SELECT 4,'c'
UNION ALL
SELECT 5,'q'

q没插入进去
DangerId UserName LeveLId NAME
----------- -------- ----------- ----
1 c 1 轻
4 y 1 轻
5 y 1 轻
10 z 1 轻
2 c 2 中
6 y 2 中
7 y 2 中
3 c 3 重
8 q 3 重
9 y 3 重

(10 行受影响)
怪众生太美丽 2011-08-19
  • 打赏
  • 举报
回复

这样的效果?你把表对应名称换成你的那个就成了..
CREATE TABLE TB1(LevelId INT,NAME VARCHAR(4))
INSERT INTO TB1(LevelId,NAME)
SELECT 1,'轻'
UNION ALL
SELECT 2,'中'
UNION ALL
SELECT 3,'重'

CREATE TABLE TB2(DangerId INT,UserId INT,LeveLId INT)
INSERT INTO TB2(DangerId,UserId,LeveLId)
SELECT 1,4,1
UNION ALL
SELECT 2,4,2
UNION ALL
SELECT 3,4,3
UNION ALL
SELECT 4,2,1
UNION ALL
SELECT 5,2,1
UNION ALL
SELECT 6,2,2
UNION ALL
SELECT 7,2,2
UNION ALL
SELECT 8,5,3
UNION ALL
SELECT 9,2,3
UNION ALL
SELECT 10,3,1

CREATE TABLE TB3(UserId INT,UserName VARCHAR(4))
INSERT INTO TB3(UserId,UserName)
SELECT 2,'y'
UNION ALL
SELECT 3,'z'
UNION ALL
SELECT 4,'c'
SELECT 5,'q'
--------
SELECT * FROM TB1
SELECT * FROM TB2
SELECT * from TB3
----查询
;WITH
DD AS(
SELECT B.DangerId,A.UserName,B.LeveLId
FROM TB3 A LEFT JOIN
TB2 B
ON A.UserId=B.UserId
)
SELECT B.*,A.NAME
FROM TB1 A LEFT JOIN
DD B
ON A.LeveLId=B.LeveLId

-------
DangerId UserName LeveLId NAME
----------- -------- ----------- ----
1 c 1 轻
4 y 1 轻
5 y 1 轻
10 z 1 轻
2 c 2 中
6 y 2 中
7 y 2 中
3 c 3 重
9 y 3 重

(9 行受影响)
jiaming0 2011-08-19
  • 打赏
  • 举报
回复
兄弟我就这么点分数了,全部送上请牛人们帮帮忙,等待中。。。。。

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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