select ms.*
from msgs ms
join private pr on pr.msg_id = ms.id and pr.user_id = "извесТное значение"
Очень нужна помощ с запросом
искал долго ничего невыяснил.
возник такой вопиющий случай:
table msgs -> id, autor, room, type, date_time
private -> id, msg_id, user_id
смысл в том что одно сообщение может быть адресовано сразу нескольким людям кому конкретно храниться в "private"
нужно выбрать сообщения из msgs проверяя таблицу private на наличие совпадения msgs.id=private.msg_id and user.id="извесное значение"
прошу помощи =)
Цитата:
искал долго ничего невыяснил
сомневаюсь
Код:
INNER JOIN msgs_private_user
ON chat_msgs.id = msgs_private_user.msg_id AND msgs_private_user.private_user_id="id пользователя"
сильно сомневаюсь в подобном решении вопроса
+ дополнительно нужно сравнить результаты ещё с двумя взаимоисключающими таблицами
я в замешательстве ...
P.S я так и непонял как работает join точнее понял но неполностью
но freets однако ткнул пальцем куда копать =)
А чего сомневаетесь-то? Каков вопрос, таков ответ. Вы просили выбрать все сообщения адресованные юзеру "извесное значение". Предложенный запрос это делает. Если вы конечно о чем-то другом не умолчали...
ну кое о чём умолчал наверное но теперь это неважно =) вопрос был решён вот так:
(
SELECT `chat_msgs`. *
FROM `chat_msgs`
WHERE room = '1'
AND TYPE = 'pub'
AND `id` > '0'
)
UNION (
SELECT `chat_msgs`. *
FROM chat_msgs
INNER JOIN msgs_private_user ON chat_msgs.id = msgs_private_user.msg_id
AND `chat_msgs`.`id` > '0'
AND msgs_private_user.private_user_id =1
)
UNION (
SELECT `chat_msgs`. *
FROM chat_msgs
INNER JOIN msgs_to_user ON `chat_msgs`.`id` = msgs_to_user.msg_id
AND `chat_msgs`.`id` > '0'
AND `msgs_to_user`.`to_user_id` = '1'
)
ORDER BY id ASC
спасибо за посильную помощ =)
Жесть, однако!