Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку пользователей состоящих в диалогах, где состою я / 9 сообщений из 9, страница 1 из 1
05.01.2019, 22:58
    #39756262
Alex888819
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Есть два диалога в таблице dialog_users. 28 и 29. В обоих диалогах состою я под user_id=3. Как мне сделать запрос в базу, чтобы вытащить моих собеседников(их user_id) из двух диалогов?
...
Рейтинг: 0 / 0
05.01.2019, 23:26
    #39756265
Dmi_tri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Что из себя представляет сущность "dialog"? Думаю, с этого нужно было начать
...
Рейтинг: 0 / 0
05.01.2019, 23:41
    #39756266
Alex888819
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Dmi_tri,

У меня три таблицы.
messages (id, message, dialog_id, user_id, created_at, updated_at),
dialogs (id, name, created_at, updated_at),
dialog_users (id, dialog_id, user_id, created_at, updated_at)
...
Рейтинг: 0 / 0
05.01.2019, 23:45
    #39756267
Alex888819
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Dmi_tri,

dialog_id - это id из таблицы dialogs.
...
Рейтинг: 0 / 0
06.01.2019, 00:07
    #39756270
Dmi_tri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Нужны собеседники, которые входят одновременно и в 28 и 29 диалог?
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT user_id
FROM messages
WHERE dialog_id=28
INTERSECT
SELECT DISTINCT user_id
FROM messages
WHERE dialog_id=29


Либо хотя бы в один из них?
Код: sql
1.
2.
3.
SELECT DISTINCT user_id
FROM messages
WHERE dialog_id=28 OR dialog_id=29
...
Рейтинг: 0 / 0
06.01.2019, 00:17
    #39756271
Alex888819
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Dmi_tri,
Однако заранее я не могу знать id диалога, мне нужно из всех имеющихся диалогов получить id пользователей состоящих в тех диалогах, в которых состою я.
...
Рейтинг: 0 / 0
06.01.2019, 01:02
    #39756276
Dmi_tri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
id юзера-то известно?
Код: sql
1.
2.
3.
SELECT user_id
FROM messages
WHERE dialog_id=(SELECT dialog_id FROM dialog_users WHERE user_id=3)
...
Рейтинг: 0 / 0
06.01.2019, 17:32
    #39756375
Alex888819
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Dmi_tri,

Запрос, который Вы предложили вернул ошибку:

"SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row (SQL: SELECT user_id FROM messages WHERE dialog_id=(SELECT dialog_id FROM dialog_users WHERE user_id='3'))"

Я знаю id авторизованного юзера, в таблице, приведенной выше, он равен 3.
...
Рейтинг: 0 / 0
06.01.2019, 18:49
    #39756384
lookat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на выборку пользователей состоящих в диалогах, где состою я
Dmi_triid юзера-то известно?
Код: sql
1.
2.
3.
SELECT user_id
FROM messages
WHERE dialog_id=(SELECT dialog_id FROM dialog_users WHERE user_id=3)



Наверное так:

Код: sql
1.
2.
3.
4.
5.
6.
SELECT user_id
FROM messages
WHERE dialog_id IN (
  SELECT dialog_id 
  FROM dialog_users 
  WHERE user_id=3  ) 
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку пользователей состоящих в диалогах, где состою я / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]