WhatIsHTML
@WhatIsHTML
HTML программист

Как объединить два запроса в один Postgresql?

Задача в том, чтобы выбрать список людей из таблицы "people" по определенному условию, но при этом, проверить, добавлен ли человек из выбираемого списка в друзья в другой таблице "user_friends".

Можно сделать двумя запросами:
1. Получаем список пользователей из таблицы "people"
SELECT * FROM people 
WHERE people.name LIKE $(regex) 
LIMIT $(limit);

2. Ищем в таблице "user_friends" айди пользователей.
SELECT * 
FROM user_friends 
WHERE user_friends.user_id = $(user_id) AND user_friends.friend_id IN ($1:csv)


Как их объединить в один?
Запросы вверху для схематического объяснения, возможно содержат ошибки
  • Вопрос задан
  • 2571 просмотр
Пригласить эксперта
Ответы на вопрос 2
@TelepnevDmitriy
Senior Web Developer
WITH peoples AS (
    SELECT * FROM people 
    WHERE people.name LIKE $(regex) 
    LIMIT $(limit)
)
SELECT f.* 
FROM user_friends f
JOIN peoples p.id = f.friend_id
WHERE user_friends.user_id = $(user_id)
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
WHERE `id` IN (SELECT ...)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы