Есть таблица chats, в ней поля id, lastupdate. Так же есть таблица members, в ней поля chatid, userid, lastvisit.
Первый запрос является таковым:
SELECT m.chatid, m.userid, c.lastupdate FROM chat1.members m, chat1.chats c
WHERE m.chatid IN
(SELECT chatid FROM chat1.members WHERE userid = ?i) AND c.id = m.chatid
AND m.userid <> ?i
При помощи него, делается выборка записей, где chatid равен тому же значению что и chatid нашего пользователя (см. IN SELECT). Далее в WHERE, мы указываем что выбирать данные нужно там, где userid не равен нашему, то есть получаем данные второго участника чата.
Далее я бы хотел сравнить значения поля c.lastupdate (последнее обновление чата) с последним нашим посещением чата (поле lastvisit, в таблице members m.)
Но дело в том, что в первом запросе вы выбрали данные другого участника нашего чата, и получается что нужно делать новый запрос, дабы выбрать теперь наши данные:
SELECT lastvisit FROM chat1.members WHERE chatid = ?i AND userid = ?i
И в конце концов у меня появляется вопрос, возможно ли эти запросы объеденить? Я пробовал делать так:
SELECT m.chatid, m.userid, c.lastupdate FROM chat1.members m, chat1.chats c
WHERE m.chatid IN (SELECT chatid FROM chat1.members WHERE userid = ?i) AND c.id = m.chatid
AND m.userid <> ?i
UNION SELECT lastvisit FROM chat1.members WHERE chatid = m.chatid AND userid = ?i
Но дело в том что UNION запрос не может распознать m.chatid
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости