![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
Добрый вечер!
На сайте, пользователь может добавлять 3 вида контента: посты, ссылки, комментарии. соответственно есть 3 таблицы: 1) Посты 2) Ссылки 3) Комментарии В каждой есть поле user_id - в нем храннится user id (о как!) и time, в ней время) Вопрос: Как можно выбрать 10 последних update`ов пользователя? Из всех таблиц одновременно? К примеру: 1. ссылка (1мин назад) 2. пост (5мин назад) 3. пост (20мин назад) 4. комментарий (40мин назад) ... Я вижу 3 метода решения проблемы: 1) Какой-то хитрый SQL запрос, который я никак сформулировать не могу)) (UNION использовать нельзя т.к. кол-во полей во всех таблицах разное) 2) Создать другую таблицу 'updates' в которую просто в хронологическом порядке записывать все обновления со ссылками на другие таблицы, типа: id | user_id | update_id | time 0 2 52 123456... 1 2 80 13456. 3) (отчаянный) - выбирать с десяток последних записей с каждой таблицы, помещать результаты в массив и оперировать массивом (это на крайний случай, но 100% рабочий) Поделитесь советом, кто имел дело с чем нибудь подобным? Это сообщение отредактировал(а) Рыжий - 25.1.2011, 00:04 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
А нефиг звёздочки лепить! указывай конкретный список совместимых требуемых полей - и будет тебе щастье. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
Akina, неа, если было бы так просто =)
В таблице ссылки у меня 4 поля, в таблице посты ~15 (там кроме поста вводится еще информация) |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Ну и что? тоже мне проблема...
Это сообщение отредактировал(а) Akina - 25.1.2011, 14:00 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
Akina, Да, огромное спасибо, это сработает
![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Рыжий, Обрати внимание на скобки. Их куча, но их наличие - КРИТИЧНО.
Подробности в документации по UNION. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
+ индекс по паре (пользователь,дата модификации)
+ not null на дату модификации, чтобы мог использоваться индекс для сортировки. При этих условиях решение, по идее, на объемах должно бы хорошо себя вести. Однако что-то меня таки постремывает малость. Я бы, пожалуй, склонился к варианту 2) ТС. Это сообщение отредактировал(а) Zloxa - 26.1.2011, 09:52 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |