SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.03.2009 07:27:16

Junkie25
Участник
Зарегистрирован: 16.03.2009
Сообщений: 3

помогите составить многотабличный запрос?

нужно извлечь из таблицы userlist данные полей nick, id и login
тех пользователей от которых есть непрочитанные (reed=0) сообщения в таблице letters
и отсортировать по дате письма, но чтоб пользователи онлайн были раньше тех кто вне сети.
Время последнего обращения к скриптам записывается в таблицу userlist в поле putdate в формате datetime
поля в таблице letters

id - id записи
who - id отправителя
komu - id получателя
reed - 0 не прочитано, 1 прочитано
datetime время/дата
ну и само сообщение

И еще в конец списка нужно добавить всех из контактного листа (кроме игнора), от кого нет сообщений
таблица contacts

id - id записи
main - у кого в контакте
contact - кто в контакте
ignor - в игноре у main

вроде понятно написал, спрашивайте если что

Неактивен

 

#2 16.03.2009 10:34:53

Junkie25
Участник
Зарегистрирован: 16.03.2009
Сообщений: 3

Re: помогите составить многотабличный запрос?

Блин, не в тот раздел написал. извиняюсь.

Неактивен

 

#3 19.03.2009 23:28:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите составить многотабличный запрос?

(SELECT u.nick, u.id, u.login FROM userlist u LEFT JOIN letters l ON l.id = u.id WHERE l.reed = 0 AND l.komu = "наш_пользователь" ORDER BY  IF(усл_на_онлайн,1,0) DESC, `l`.`datetime`)
UNION
(SELECT u.nick, u.id, u.login FROM userlist u LEFT JOIN (
SELECT contact FROM contacts WHERE main = "наш_пользователь" AND contact NOT IN (SELECT who FROM letters WHERE komu = "наш_пользователь" ) AND ignor = 0) v ON u.id = v.contact);

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson