SQL-запрос, объединяющий два запроса или любой другой метод - PullRequest
0 голосов
/ 29 марта 2019

У меня есть две таблицы

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, функция получает идентификатор пользователя и возвращает таблицу всех пользователей, присоединяющихся к столбцу is_accepted, специфичному для входящих user_id.

1 Ответ

1 голос
/ 29 марта 2019

Получить всю пользовательскую информацию из пользовательской таблицы без параметра 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...