Задать вопрос

Как правильно составить sql запрос?

у меня есть таблица
626a67a41bd3c330076888.png

Я хочу получить id пользователей которые состоят в одном чате с пользователем по id = 2
должна в итоге получиться такая вот таблица
chat_id | id_user
--------------------
1 | 4
3 | 5

Я сначала сделал такой код:

SELECT party.id_user, users.name, users.surname, users.avatar, party.chat_id   
    FROM party JOIN users ON party.id_user = users.id_user 
    WHERE chat_id = (SELECT chat_id FROM `party` WHERE party.id_user = 2) 
    AND party.id_user != 2


С 1 чатам работало все хорошо, но вот при добавлении второго выскакивает такая ошибка: "Подзапрос возвращает более одной записи", как подправить код чтобы можно было это осуществить?
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@Akela_wolf
Extreme Programmer
SELECT p1.* FROM party p1 
JOIN party p2 ON p1.chat_id=p2.chat_id AND p1.user_id != p2.user_id
WHERE p2.user_id = :user_id

По желанию джойните туда таблицу пользователей, чтобы сразу получить данные пользователя (имя и пр.)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `p`.`id_user`, `u`.`name`, `u`.`surname`, `u`.`avatar`, `p`.`chat_id`
  FROM `party` AS `o`
  JOIN `party` AS `p`
    ON `o`.`id_user` = :user
      AND `p`.`chat_id` = `o`.`chat_id`
      AND `p`.`id_user` != :user
  JOIN `users` AS `u` ON `users`.`id_user` = `p`.`id_user`
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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