| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > составной запрос |
| Автор: Diksa 15.9.2014, 14:26 | ||||
| Ребят подскажите возможно ли сделать такой запрос? таблица в базе:
необходимо вывести сумму workedTime по числам, что-то на подобие этого
|
| Автор: Akina 15.9.2014, 14:30 |
| RTFM "GROUP BY" & "SUM()" |
| Автор: Diksa 15.9.2014, 14:57 | ||||
Эсли я правильно понял запрос должен иметь след. вид
но результат получается не такой как мне надо :(
|
| Автор: Akina 15.9.2014, 18:52 |
| 1) Неправильно понял. 2) Неправда - ты показываешь результат совсем другого запроса. |
| Автор: Diksa 16.9.2014, 10:38 | ||
результат выполнения запроса:
http://itmages.ru/image/view/1919181/acf2b5b5 видно что idFlight = 2 выводит за 2014-07-02 а если посмотреть на данные то видно что есть и на 2014-07-03 и на 2014-07-04 http://itmages.ru/image/view/1919182/41b258b8 PS: Не могу понять зачем Вы тратите свое время, всеравно исходя из Вашего последнего ответа последуют следующие вопросы :( или это так создается выдимость онлайна на этом форуме. |
| Автор: Akina 16.9.2014, 11:24 |
Вопрос задан в тематическом разделе. Значит, автор желает не только увидеть, как, но и понять, почему именно так. Кроме того, предполагается, что он анализирует ответы и выполняет данные там рекомендации. А те, кто приходят с желанием просто получить готовый ответ, должны обращаться не в тематические разделы, а в "Помощь студентам" или вообще во фриланс. PS-1. Вы НЕ ЧИТАЛИ справку по GROUP BY. Либо читали её крайне невнимательно. Иначе видели бы, в чём принципиальная ошибка. PS-2. Вы показываете запрос, выбирающий три поля, и вывод с четырьмя полями. |
| Автор: Diksa 16.9.2014, 15:18 | ||
| Спасибо за помощь! если кому пригодится ответ то запрос выглядит след убразом
|
| Автор: Akina 16.9.2014, 15:59 |
| Не очень хороший вид запроса. 1) Поскольку таблица одна, алиасы имени таблицы можно не использовать. Либо, если использовать, то абсолютно везде. Если таблиц более одной - безусловно везде, даже если текущая структура позволяет вроде бы однозначно идентифицировать таблицу-источник какого-либо поля. Такая привычка убережёт от кучи ошибок в будущем. 2) В кляузе Group By нежелательно брать список полей группировки в скобки. Это может привести к лишним неявным преобразованиям типов. 3) При отборе по дате лучше использовать не Like (поскольку при этом выполняется преобразование даты в строку), а Between. Кстати, Like не позволит серверу использовать индекс, если таковой имеется. 4) Хоть в MySQL слово date не является зарезервированным, оно вполне может попасть в список в следующих версиях - уж больно популярное. Рекомендуется давать полям менее популярные имена. 5) В MySQL группировка одновременно означает и сортировку по тому же выражению, если не указан иной порядок сортировки. Кляуза Order By - лишняя. К тому же запрос не отвечает начальным условиям темы. |
| Автор: Zloxa 16.9.2014, 17:05 |
Мне тоже так сначала показалось, но потом я перечел: И решил, что если под "числами" имеетя в виду "дата", то все же - соответствует. Не соответствует контрольному примеру результирующего набора данных |
| Автор: Akina 16.9.2014, 17:18 |
Обычно примеру я верю больше, чем описанию. В примере - тем более сравнительно аккуратно отформатированном,- ошибиться намного сложнее. Кроме того, каждой дате соответствует одно лишь значение имеющегося в выходном наборе поля idFlight. Но значение этого поля варьирует, что намекает на возможное соответствие одному значению date нескольких разных значений idFlight. И тогда о какой статистике речь, вообще неясно... Впрочем, слишком уж простая задача вызвала затруднения - создалось впечатление, что это была неудачная попытка решить проблему кавалерийским наскоком без изучения даже самых основ. Потому ТС и был послан в STFW. |
| Автор: Diksa 17.9.2014, 15:11 |
| БЛАГОДАРЮ за столь интересные розьяснения! PS: Поскольку к такому способу решения задач обращаюсь крайне редко, признаю что задачу поставил не совсем корректно с некоторыми упущениями. Как-то привычнее гуглить до потери пульса, а тут решился, и собственно от этого процесса получил не весьма приятные впечатления, обидно :( |
| Автор: Akina 17.9.2014, 15:52 |
| Diksa, гуляние по граблям - это единственный способ НАДЁЖНОГО изучения предмета. |