![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Сортировка в подзапросе не имеет смысла.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
hollywood |
|
||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
История продолжается... Итак, ценой неимоверных умственных усилий мы получили-таки табличку:
vasya 2 3 fedya 3 5 misha 3 4 ![]() теперь сверхзадача заключается в том, чтобы к оной табличке в конец добавить строчку со сводным суммированием, т.е. нужна таблица: vasya 2 3 fedya 3 5 misha 3 4 total 8 12 для получения изначальной таблицы использовал вариант с UNION-ами:
попробовал решить текущую задачу таким макаром:
Мускул справедливо вопрошает, чего я покурил и откуда взял Total во втором запросе верхнего (по уровню вложения) UNION-а. Понять я его, конечно могу ![]() ![]() Можно как-нибудь задать глобальную пользовательскую переменную с таблицей Total? С тем, чтобы результаты можно было использовать и в других SELECT-ах. Или как это лучше сделать? Это сообщение отредактировал(а) hollywood - 9.5.2008, 12:55 |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
создать временную(TEMPORARY) таблицу (возможно, будет ещё быстрее, если создать в памяти(ENGINE=MEMORY)). заполнить. временная таблица с точки зрения каждого отдельного connection к базе имеет уникальное содержимое. и сможешь в своих запросах до закрытия подключения к БД использовать любое количество раз ![]() |
|||
|
||||
hollywood |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Спасибо, вариант интересный. Стоит того, чтобы с ним хотя бы поковыряться. Я вот тут только голову ломаю: может не стоит заморачиваться с запросом, а конечную сумму в скрипте уже посчитать? Это, конечно, уже не так красиво выглядит, но я опасаюсь за быстродействие... По сравнению с реализацией суммирования в php во время итерирования по результатам запроса - создание временной таблицы в памяти сильно медленнее должно быть?..
|
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 2 Всего: 42 |
hollywood,
Если у тебя 3 строки в итоговом запросе - то где хочешь, там и суммируй. Ты еще не знаешь своих узких мест, а уже пытаешься оптимизировать. Сделай два запроса и не мучайся. Вот когда наступит время оптимизации, тогда и будешь думать, выбирать ли во временную таблицу или посчитать в скрипте. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |