我有两个桌子
1-个用户表 2. friends_table
users_tbl
列是
user_id int primary key, user_name text
friend_tbl
列是
sender_id references users_tbl (user_id) int,
receiver_id int references users_tbl (user_id),
is_accepted bit
我需要查询特定的@user_id
,并且它需要返回所有用户,而没有@user_id
加入friends_tbl
列。
示例数据表:
users_tbl :
user_id user_name
----------------------------
1 tarik
2 alex
3 frank
friends_table :
sender_id receiver_id is_accepted
--------------------------------------
1 2 0
输入
user_id =1
输出
user_id user_name is_accepted
------------------------------------
2 alex 0
3 frank NULL
我在mvc中使用此函数,该函数获取用户ID,并返回所有加入了专门针对传入is_accepted
的{{1}}列的用户的表。
答案 0 :(得分:1)
从用户表中获取所有用户信息,而无需使用参数user。
与好友表左联接并获取is_accepted列数据。
Declare @users_tbl table
(
user_id int primary key,
user_name varchar(100)
)
Declare @friend_tbl table
(
sender_id int,
receiver_id int,
is_accepted bit
)
insert into @users_tbl values(1,'tarik')
insert into @users_tbl values(2,'alex')
insert into @users_tbl values(3,'frank')
insert into @friend_tbl values(1,2,0)
Declare @userId int = 3
Select u.user_id, u.User_name, f.is_accepted from @users_tbl u
Left Join @friend_tbl f on u.user_id = f.receiver_id AND f.sender_id = @userId
Where u.user_id != @userId