Q_BASIC
Хранитель порядка
- Регистрация
- 30 Ноя 2013
- Сообщения
- 516
- Реакции
- 1.240
- Автор темы
- #1
Приветствую,
Есть 3 таблицы: пользователи, диалоги, id пользователей к диалогам.
Надо получить 30 последних диалогов пользователя, с десятком имен пользователей в каждом диалоге.
Первым делом получаем диалоги:
То есть из таблицы dialogs_accounts берем записи в которых есть пользователь, и в этих записях написаны ID диалогов. По этим id получаем уже сами диалоги.
Теперь надо по id диалога получить остальных пользователей.
А теперь надо для этих аккаунтов имена получить
Как бы это по-умному сделать?
Есть 3 таблицы: пользователи, диалоги, id пользователей к диалогам.
Надо получить 30 последних диалогов пользователя, с десятком имен пользователей в каждом диалоге.
Первым делом получаем диалоги:
Код:
SELECT `dialogs`.* FROM `dialogs_accounts`, `dialogs` WHERE `dialogs_accounts`.`account_id` = {user_id} AND `dialogs`.`id` = `dialogs_accounts`.`dialog_id` ORDER BY `dialogs`.`update` DESC LIMIT 30
То есть из таблицы dialogs_accounts берем записи в которых есть пользователь, и в этих записях написаны ID диалогов. По этим id получаем уже сами диалоги.
Теперь надо по id диалога получить остальных пользователей.
Код:
SELECT * FROM `dialogs_accounts` WHERE `dialog_id`={dialog_id} LIMIT 10
А теперь надо для этих аккаунтов имена получить
Код:
SELECT * FROM `accounts` WHERE `id` = {dialogs_accounts.account_id}
Как бы это по-умному сделать?