Сложный поисковый запрос MySQL - PullRequest
0 голосов
/ 29 января 2012

У меня есть запрос ниже, выполняемый для моей таблицы users и chats, и я пытаюсь group by в моей таблице chats для user_id OR receiver_id, а не просто user_id, как вы можете видеть ниже вSQL-запрос внутри INNER JOIN.

SELECT c.*, users.username, users.firstname, users.lastname 
FROM chats c 
INNER JOIN( SELECT MAX(created) AS Date, user_id, receiver_id, chat, type, id 
FROM chats 
WHERE receiver_id = 286 OR user_id = 286 
GROUP BY user_id ) cc ON cc.Date = c.created AND cc.user_id = c.user_id 
LEFT JOIN users ON users.id = c.user_id 
WHERE c.receiver_id = 286 OR c.user_id = 286

Я пытался GROUP BY user_id OR receiver_id, но я не могу получить информацию для идентификатора 286 для receive_id или user_id.

Есть ли способ, которым мыможно достичь этого и сгруппировать так, чтобы мы могли просматривать оба столбца и получать результаты по обоим?

Нужно ли выполнять два запроса и объединять их вместе?

1 Ответ

1 голос
/ 29 января 2012

Если вы ищете самую последнюю запись чата, почему бы вам просто не отсортировать результаты по созданным и получить первую строку следующим образом:

SELECT c.*, users.username, users.firstname, users.lastname 
FROM chats c, users u
WHERE (c.receiver_id = 286 OR c.user_id = 286) AND
      u.id = c.user_id 
ORDER BY created DESC
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...