SQL-запрос для таблицы чатов для sqlite3 и mysql - PullRequest
0 голосов
/ 25 августа 2011

У меня есть простая таблица чата:

id, sender_id, sender_name, recipient_id, recipient_name, content

Попытка сгруппировать все чаты, произошедшие между Person A (мной) и (кем-то еще) ИЛИ (кем-то еще) и Person A

Как кто-то может это сделать?

РЕДАКТИРОВАТЬ

Цель состоит в том, чтобы получить список всех чатов, в которых находится человек А, и перечислить только других людей.

т.е. если у человека А есть чаты с человеком B, человеком C и человеком D, я хочу показать список с человеком B, человеком C и человеком D. Затем на следующем экране я покажу чаты с человеком A и кем-то еще.

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

попробуйте

SELECT * FROM chatTable
WHERE sender_name IN('personA','personB') AND
recipient_name IN('personA','personB');
0 голосов
/ 25 августа 2011
select * from chat where
recipient_id in (persona, personb )
and sender_id in ( persona, personb )

РЕДАКТИРОВАТЬ:

Технически, вы на самом деле не «группируете» в смысле SQL, возможно, вы упорядочиваете результаты.

примерно так:

select id, content, sender_id as other_person
from chat 
where recipient_id = persona
union
select id, content, recipient_id
from chat 
where sender_id = persona
order by other_person

также, пожалуйста, подумайте о нормализации сейчас, а не позже.Ваша идея «не запрашивать дважды» неверна.лучше не повторять имена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...