|
|
|
| Имеются 2 таблицы user и chat
user с полями
chat с полями
id_chat
date_read
date_writ
id_to -кому адресовано сообщение
id_from - от кого это сообщение
mes- текст сообщение
|
необходимо из таблицы chat выбрать все сообщения которые были написаны как пользователем так и пользователю
для этого я написал запрос
$SQL="SELECT chat.mes, chat.date_writ FROM chat where(chat.id_to=".$_GET['id_user']." OR chat.id_from=".$_GET['id_user'].") ORDER BY date_writ DESC ";
|
Но он не позволяет извлечь информацию кто автор сообщения как его переделать что бы можно было в одном запросе получить как текст сообщения так и от кого оно написано | |
|
|
|
|
|
|
|
для: Prihod
(02.10.2007 в 20:29)
| | id_to - кому адресовано сообщение
id_from - от кого это сообщение
Это как бы два разных человека. Как же они могут иметь один и тот же id_user? | |
|
|
|
|
|
|
|
для: sim5
(03.10.2007 в 02:21)
| | Задача выбрать сообщения которые пользователь с определенным id либо отсылала либо принимал поэтому id_to и id_from и сравниваются с одним и тем же id | |
|
|
|
|
|
|
|
для: Prihod
(02.10.2007 в 20:29)
| | Вероятно, так:
$SQL="SELECT chat.mes, chat.date_writ, user.name
FROM chat
left join user on (user.id = chat.id_to || user.id = chat.id_from)
where(chat.id_to=".$_GET['id_user']." OR chat.id_from=".$_GET['id_user'].")
ORDER BY date_writ DESC ";
|
| |
|
|
|
|
|
|
|
для: Thrasher
(03.10.2007 в 13:03)
| | Запрос работает но происходит дублирование сообщений т.к в условии используется или chat.id_to || user.id = chat.id_from как сделать что бы выводились записи без повтора | |
|
|
|
|
|
|
|
для: Prihod
(03.10.2007 в 19:37)
| | А так?
$SQL="SELECT DISTINCT chat.mes, chat.date_writ, user.name
FROM chat
left join user on (chat.id_to = user.id || chat.id_from = user.id)
where(chat.id_to=".$_GET['id_user']." OR chat.id_from=".$_GET['id_user'].")
ORDER BY date_writ DESC ";
|
| |
|
|
|
|
|
|
|
для: Thrasher
(04.10.2007 в 11:03)
| | Я об этом уже думал но может сложится такая ситуация что текст сообщения может повторится в 2 и более сообщениях и кто му же DISTINCT chat.mes, chat.date_writ, user.name FROM chat выводит повторяющиеся поля , а DISTINCT chat.mes FROM chat уже нет почему не понятно | |
|
|
|
|
|
|
|
для: Prihod
(04.10.2007 в 11:39)
| | Если нужно отображать автора сообщения, то так:
$SQL="SELECT chat.mes, chat.date_writ, user.name
FROM chat
left join user on user.id = chat.id_from
where(chat.id_to=".$_GET['id_user']." OR chat.id_from=".$_GET['id_user'].")
ORDER BY date_writ DESC ";
|
| |
|
|
|
|
|
|
|
для: Thrasher
(04.10.2007 в 12:16)
| | А вот окончательный вариант:
$SQL="SELECT chat.mes, chat.date_writ, from.name from_name, to.name to_name
FROM chat
LEFT JOIN user `to` ON to.id = chat.id_to
LEFT JOIN user `from` ON from.id = chat.id_from
where(chat.id_to=".$_GET['id_user']." OR chat.id_from=".$_GET['id_user'].")
ORDER BY date_writ DESC ";
|
| |
|
|
|