Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询合并两个查询或任何其他方法_Sql_Sql Server - Fatal编程技术网

SQL查询合并两个查询或任何其他方法

SQL查询合并两个查询或任何其他方法,sql,sql-server,Sql,Sql Server,我有两张桌子 1-用户表 2.餐桌上的朋友 users\u tbl列为 user_id int primary key, user_name text sender_id references users_tbl (user_id) int, receiver_id int references users_tbl (user_id), is_accepted bit friend\u tbl列为 user_id int primary key, user_name text se

我有两张桌子

1-用户表 2.餐桌上的朋友

users\u tbl
列为

user_id int primary key, user_name text 
sender_id references users_tbl (user_id) int, 
receiver_id int references users_tbl (user_id), 
is_accepted bit
friend\u tbl
列为

user_id int primary key, user_name text 
sender_id references users_tbl (user_id) int, 
receiver_id int references users_tbl (user_id), 
is_accepted bit
我需要查询一个特定的
@user\u id
,它需要返回所有没有
@user\u id
加入
好友\u tbl
列的用户

包含数据的表格示例:

用户\u tbl

user_id    user_name
----------------------------
    1      tarik 
    2      alex
    3      frank
sender_id    receiver_id   is_accepted
--------------------------------------
    1            2              0
朋友表

user_id    user_name
----------------------------
    1      tarik 
    2      alex
    3      frank
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\u accepted
列的用户,该列特定于传入的
user\u id

从用户表中获取所有用户信息,不带参数user。
左键连接好友表并获取is_接受的列数据

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

谢谢你的回复,但我确实尝试了这个方法,它没有得到我想要的结果如果你把@user\u id=3放进去,它将返回-->alex 0,这不是我需要的,我需要它为null,因为这个用户和@user\u id之间没有朋友请求,thnaks@TarikHusin,我添加了一个新条件
f.sender\u id=@userId
。现在它对两个输入都起作用了。@TarikHusin如果它起作用,你能把它作为答案并把这个答案标记为有用的吗。好的,我会的,但是我还有一个问题,如果@user\u id=2,那么用户1接受的应该是0,因为他和1之间有一个朋友请求