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)表 展开
现在我想根据user_id查询出所有的button,并且这些button中要包含一个 新的字段checked,checked代表该用户是否对这个按钮有权点击,那么sql查询怎么写
button表(button_id)、user(user_id)表、user_button(user_id,button_id)表 展开
展开全部
不知道理解的对不对,有问题再问我吧
建立测试数据
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
展开全部
select *,'有点击权限' checked
from button where button_id in (select button_id from user_button where user_id=你的ID)
from button where button_id in (select button_id from user_button where user_id=你的ID)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说明一下每个表有哪些字段吧
更多追问追答
追问
主要字段已经在小括号里标明了
追答
根据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 = ‘有权点击标志’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |