|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Есть парсер, он парсит файлы в БД. Файлы бывают разные- со скана, выгрузка с БД, самостоятельно ведомая БД. Данные в них одинаковые, но называются по разному…Поэтому пришлось использовать костыль в виде таблицы Замены (Рокеровки -ну я так это назвал). Это краткое вступление-почему так коряво то все. Теперь собственно сама проблема: Таблица Рокеровка IDOLD_VALNEW_VALVIDCATEGORY1TV-232СПЕКТ 5ТВТехника2СПЕКТ 5СПЕКТР 5ТВТехника3Бумага СнегСнегурочка А4БумагаОфисные товары Основная таблица(ALFA): ID ID_NEW_NAME DAT POSIT SUMMA1 3 18.07.20 5 25002 3 19.07.20 3 15003 3 20.07.20 2 1000 Что собственно надо, нужен отчет который выводит итоговую статистику по продажам, те позиции которые не продавались-должны показывать нули (вот с этим то и проблемы, как это сделать?). Тот запрос который сейчас есть: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Он не выводит те "Виды"-по которым нулевые продажи. Ситуация еще немного осложняется тем что БД-FireBird (и она не может селект из селекта,ну и руки у меня кривые). Модератор: Пользуйтесь тегами! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 09:48 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Если нужны нули, то может LEFT JOIN вместо INNER? P.S: Firebird может селект из селекта... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:01 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
alekcvp, пробовал, результат тот же, только выполняется минуту вместо нескольких секунд. толи не в том порядке таблицы объединяю... пробовал и Right join. Тоже самое. п.с. утверждать не буду. ФайрБирд 2.5 - не получилось под IBExpert выполнить такой запрос(Селект в селекте). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:04 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ, Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:39 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ну вот например запрос тех позиций которые по нулям. Но как его присоединить к первому запросу...Да еще и с суммами по нулям, и сгрупировать по "ВИДу" Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:40 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:45 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ, Ну как-то так: Код: sql 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3.
Если нужны именно '0' вместо 'null' то можно добавить coalesce(). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:49 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
brick08 , alekcvp - так то да, но на продакшене получается ересь. Типо ТВ-ноль, потом дальше по списку видишь за этот период Тв-10 штук, например. Щас, дайте время сам переварю что пошло не так-отпишу. на тестовой базе(как в первом посте) все ок, там нет такого наполнения просто. В любом случае спасибо, что указали как надо писать сей запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 11:03 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ Щас, дайте время сам переварю что пошло не так Чтобы видеть "0" по датам необходимо откуда-то взять эту дату, чтобы потом к ней присоединять продажи... Т.е. нужна будет ХП типа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 11:46 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Итоговый запрос: Код: plsql 1. 2. 3. 4. 5.
CDATECATEGORYVIDSUM_POSITSUM_SUMMA19.07.2020Офисные товарыБумага3150019.07.2020ТехникаТВ 20.07.2020Офисные товарыБумага2100020.07.2020ТехникаТВ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 11:54 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Свои пять копеек внесу. Зачем отображать нулевые продажи? Представьте у Вас список товаров несколько тысяч. Многих в наличии на складе нет давно. Зачем тащить эти нули? Если уж есть какие-то продажи конкретного товара за период и нужно отобразить некие нули, то Ваш запрос "простоват" для этого. И возможно лучше это сделать на клиенте. Реально Вы насилуете сервер, пытаясь получить несуществующие данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 12:00 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
KreatorXXI, Мне кажется этот вопрос надо задавать преподавателю ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 12:08 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Код: sql 1.
Не надо так писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 12:37 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
WildSery Код: sql 1.
Не надо так писать. А как надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 12:55 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Вот так, наверное Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Если кто изящнее знает-напишите. А так вопрос решен. alfa2-это дубль alfa, тоже самое с рокеровкой, чтобы прод не мучить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:41 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
alekcvp KreatorXXI, Мне кажется этот вопрос надо задавать преподавателю Надо тогда посмотреть задание. В голове у неофита застрянут неправильные рекомендации. Потом их оттуда не вышибешь ничем. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:43 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
alekcvp А как надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:48 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
У неофита в голове уже помойка, Вы лучше мне растолкуйте куда чего переносить. А то на проде уже 5 минут запрос крутиться, да не выкрутиться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:51 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ Вот так, наверное И в чём смысл возвращаемого набора данных? CATEGORY VIDPOSITОфисные товары Бумага2Офисные товары Бумага3ТехникаТВ AlekZ Вы лучше мне растолкуйте куда чего переносить. Вот так не работает? (2 сообщения) 22170307 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:53 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ Вот так, наверное Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Если кто изящнее знает-напишите. А так вопрос решен. alfa2-это дубль alfa, тоже самое с рокеровкой, чтобы прод не мучить. Второй запрос (после Union) вообще дурно попахивает. Вы посмотрите "Анализ плана" и "Анализ производительности". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:58 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
alekcvp, хранимку пока не создавал. В ФайрБирде с ними не работал, надо прогуглить куда ее тут сувать. Меня напрягло то что на живой базе с Вашим запросом лезут и нули по некоторым позициям, по которым есть продажи. И не совсем своими мозгами понимаю как срабатывает условие "нулевой даты" (нет записи-значит DATE нулевая?). А смысл-вернуть те строки по которым ноль продаж. У Вас там опечатка получилась в таблице-там в POSIT null у техники. KreatorXXI, 10 минут выполняется...чуть модифицировал запустил еще раз. Жду :) PLAN (ALFA NATURAL) PLAN (ALFA NATURAL) PLAN SORT (JOIN (ALFA NATURAL, ROKEROVKA INDEX (PK_ROKEROVKA))) PLAN SORT (JOIN (R2 NATURAL, ALFA NATURAL)) -по мне это ругань чистой воды. Non Indexed Reads ALFA - 977 304 192 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 14:07 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ alekcvp, Меня напрягло то что на живой базе с Вашим запросом лезут и нули по некоторым позициям, по которым есть продажи. Предыдущий запрос был не правильный, я переделал :) P.S: Тестовые базы уже не в моде? Эксперименты на продакшене? О_о AlekZ хранимку пока не создавал. В ФайрБирде с ними не работал, надо прогуглить куда ее тут сувать. Рекомендую IBExpert 1883929 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 14:18 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
AlekZ PLAN (ALFA NATURAL) PLAN (ALFA NATURAL) PLAN SORT (JOIN (ALFA NATURAL, ROKEROVKA INDEX (PK_ROKEROVKA))) PLAN SORT (JOIN (R2 NATURAL, ALFA NATURAL)) -по мне это ругань чистой воды. Non Indexed Reads ALFA - 977 304 192 Может, действительно, книжки какие для начала почитать? У Вас план по "натуралу". Это значит, что не используются никакие индексы. Плюс ещё идёт перемножение таблиц. 10 минут - это ещё хорошо при таком раскладе. Индексы по датам хоть есть? Я бы оставил в конце концов один из первых Ваших запросов. Таблица alfа должна отрабатываться по индексу с датой, а вторая таблица (боюсь её название даже писать) должна быть связана по inner join (inner можно не писать). Нули добивайте на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 14:27 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
alekcvp, я как раз в ИБЭксперте и сижу. Для ОгоньПтицы по-моему других админок то и нету :) Ну ладно, я запустил Ваш "Итоговый запрос:" -не знаю , то или не то. Но пока 5 минут и тухляк (все еще выполняется) :) Прод такой-его не жалко. Его использую я и еще 1 человек, для которого весь этот огород и делался. Был бы прод который нельзя трогать-была бы нормальная инфраструктура/норм зарплата/ и норм специалист который такие вопросы по форумам не задает (тут я ушел плакать в дальний угол). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 14:30 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
KreatorXXI, может и книги почитать. А зачем индексация по датам? Какие плюсы? Ткните на дельную книгу или статью. Я не ДБА (когда-то хотел им стать), но у нас не нужны ученики. так прочитаю-но через 2 года забуду. и когда поле дата было ключевым? Или индекс и ключ не одно и тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 14:32 |
|
|
start [/forum/topic.php?fid=40&msg=39981700&tid=1560290]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 151ms |
0 / 0 |