SQL语句该怎么写 30

三张表,button表(button_id)、user(user_id)表、user_button表,其中user_button表中user与button是多对多的关系,... 三张表,button表(button_id)、user(user_id)表、user_button表,其中user_button表 中user与button是多对多的关系,表示user对某个button是否有权点击。
现在我想根据user_id查询出所有的button,并且这些button中要包含一个 新的字段checked,checked代表该用户是否对这个按钮有权点击,那么sql查询怎么写
button表(button_id)、user(user_id)表、user_button(user_id,button_id)表
展开
 我来答
twvampire
2013-08-22 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2994万
展开全部

不知道理解的对不对,有问题再问我吧

建立测试数据

CREATE TABLE button(button_id varchar(10)) 
go
CREATE TABLE [user](USER_ID varchar(10))
go
create TABLE user_button(USER_ID varchar(10),button_id varchar(10))
go

INSERT INTO dbo.button
        ( button_id )
SELECT 
1001
UNION ALL
SELECT 
1002
UNION ALL
SELECT 
1003
UNION ALL
SELECT 
1004

go
INSERT INTO [dbo].[user]
        ( [USER_ID] )
SELECT 
1
UNION ALL
SELECT 
2
INSERT INTO dbo.user_button
        ( USER_ID, button_id )
SELECT 1,1002
UNION ALL
SELECT 1,1003
go

查询语句

SELECT a.button_id,SUM(CASE WHEN isnull(b.USER_ID,'')='' THEN 0 ELSE 1 END)  AS checked
FROM 
(
SELECT * 
FROM [user] cross APPLY [dbo].[button]
) a LEFT JOIN user_button  b ON a.USER_ID=b.USER_ID AND a.button_id=b.button_id
GROUP BY a.button_id
结果:
button_id checked
1001 0
1002 1
1003 1
1004 0
jaypgcool
2013-08-26 · TA获得超过419个赞
知道小有建树答主
回答量:440
采纳率:0%
帮助的人:154万
展开全部
select *,'有点击权限' checked
from button where button_id in (select button_id from user_button where user_id=你的ID)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adws0105
2013-08-21
知道答主
回答量:61
采纳率:0%
帮助的人:22万
展开全部
说明一下每个表有哪些字段吧
更多追问追答
追问
主要字段已经在小括号里标明了
追答
根据user_id查询出所有的button
select a.user_id,a.button_id
from
user a,user_button b
where
a.user_id = b.user_id
and a.user_id = '需要查询的userid'
and b.check = ‘有权点击标志’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式