![]() |
|
Модераторы: skyboy |
![]()
|
|
| aktuba |
|
||||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Друзья, снова нуждаюсь в Вашей помощи.
Есть две таблицы: Таблица пользователей:
Таблица статистики:
Задача: получить таблицу за определенные даты (dt_1, dt_2, dt_3, dt_4, ...) с сортировкой по каждому столбцу
Искренне надеюсь на Вас, т.к. у самого никак не получается =( -------------------- ![]() |
||||||
|
|||||||
| Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
В Вашем же предыдущем посте в этой ветке писал Gudinya...
Что то вроде такого... На сервере не проверял... В-у-у-упс Сравнение с датами помещается в подзапросы...
Это сообщение отредактировал(а) Gluttton - 12.10.2009, 22:40 -------------------- Слава Україні! |
||||
|
|||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Я про это уже думал, но... Какова будет нагрузка такого запроса, учитывая что в WHERE будет IN?
-------------------- ![]() |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
А зачем столько подзапросов-то? зачем вообще подзапросы?
Если же СУБД не поддерживает сортировку по вычисляемым значениям, то
Это сообщение отредактировал(а) Akina - 12.10.2009, 22:59 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Ну... Этого я не знаю, т.к. я теоретик Но, как говориться, какая будет такая и будет... Используйте OLAP Теперь по сути, какие я вижу (теоретические 1. То что будет в IN вынести в CTE, если их поддерживает СУБД, тогда запрос на IN будет выполнен однажды и помещен во временную таблицу. 2. Не использовать IN, а (если позволяет логика приложения) заменить его на BETWEEN, и тогда связывание таблиц производить не сразу, а после SELECT ... BETWEEN - это позволить существенно (а может и не существенно) уменьшить сумарную таблицу, которая будет построена в результате соединения. Ну это так... Теоретически А что запрос на практике медленно работает? Добавлено @ 23:09 Akina, ччерт... Всё гениальное - просто Но по моему не хватает group by... Добавлено @ 23:11 Хм... А если добавить group by, то запрос вернет сумму по всем пользователям вместе, а не по отдельности... Добавлено @ 23:12 Akina, выходит твой запрос не подходит (теоретически Бр-р-р, что то я запутался... Но без group by работать не будет - забадай меня комар! Это сообщение отредактировал(а) Gluttton - 12.10.2009, 23:14 -------------------- Слава Україні! |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Akina, спасибо огромное! Но... Так возвращает только тех пользователей, у которых есть статистика =(. А как получить всех пользователей? Пусть у них вместо статы будет 0 или NULL. Буду очень благодарен...
GROUP BY login спасет ;) P.S.: все время забываю указывать бд - mysql 5. -------------------- ![]() |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Заменить внутреннее соединение на внешнее левое или правое (inner join на left join или right join) ... Для приведенного прмера Akina нужно правое... Это сообщение отредактировал(а) Gluttton - 13.10.2009, 00:26 -------------------- Слава Україні! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
угу. когда пишешь в окне форума - запросто можно что-нить упустить. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Не помогает =( -------------------- ![]() |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
в добавок к ранее озвученному: предикат "statistic.dt in (dt_1, dt_2, dt_3)" перенести из where в join
Это сообщение отредактировал(а) Zloxa - 13.10.2009, 12:42 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
О! Теперь вроде работает! Всем thx и плюсы.
-------------------- ![]() |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |