Помогите с SQL запросом | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
Помогите написать SQL-запрос.
Дело в том, что во второй таблице ОЧЕНЬ много записей, тому необходима оптимизация, индексы по Key и Date есть. Вот простой пример. Есть две таблицы Справочник товара: goods Key Name Kod 1 Товар1 1 2 Товар2 2 3 Товар3 1 и таблица прихода: table1 Key Date Kol 3 12.2017 3.000 1 01.2018 10.000 2 02.2018 6.000 1 02.2018 5.000 Необходимо отобразить весь товар с кодом - 1, и датой больше 31.12.2017 Чтоб получилось вот так. Key Name Suma1 Suma2 1 Товар1 10.000 5.000 3 Товар3 0.000 (или Null) PS.Проблема только в оптимизации SQL запроса.
Исправлено 2 раз(а). Последнее : ZenTigra, 09.03.18 11:46 |
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
в предположении что Key в cTovar уникален Исправлено 1 раз(а). Последнее : AndyNigmatec, 09.03.18 12:28 |
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
или же (если я прально понял задачу) так:
P.S. догнал - я все не прально понял, у ТС все готово оказывается Исправлено 1 раз(а). Последнее : AndyNigmatec, 09.03.18 12:42 |
Re: Помогите с SQL запросом | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
Не подходит, мне нужно чтоб показало ВЕСЬ товар с кодом kod=1, а в этом запросе отображается только товар в которого есть движение в 2018 году.
Нужно чтоб было вот так: Key Name Suma1 Suma2 1 Товар1 10.000 5.000 3 Товар3 0.000 (или Null) |
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
- второй вариант и показывает весь ))), но я так понял вам не нужна тупа сумма - а она должна быть разбита по месяцам (исходя из приведенного запроса) Исправлено 1 раз(а). Последнее : AndyNigmatec, 09.03.18 12:44 |
Re: Помогите с SQL запросом | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
Второй вариант, то что нужно, спасибо. Буду пробовать на производительность.
PS.Это формирование закупочного листа, со статистикой продаж по месяцах, и иной дополнительной информацией. Я не стал показывать настоящий код, он сложный. |
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Да детали не суть ))) ... но боюсь оптимизировать тут особо не получится ... поскоку в таблице прихода table1 нету кода и его полюбому подтягивать из справочника
Исправлено 1 раз(а). Последнее : AndyNigmatec, 09.03.18 13:07 |
Re: Помогите с SQL запросом | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Как-то так. Если ограничивать "большую таблицу" нужно именно в рамках одного года (иначе большого смысла в подсчёте "помесячных сумм" не видно). На будущее - самому неплохо бы приводить нужные create cursor/table. А если речь про "большие объёмы" и оптимизацию, то и с FOR циклом генерящим нужные 100500 записей для "тяжёлых" таблиц. P.S. В зависимости от количества разных "товаров" и "товаров внутри искомой группы", и количества лет в table1 (если там история за последние 50 лет, это совсем не одно и то же что история за 2-3 года) может оказаться выгоднее считать отдельно (подзапросом) помесячные суммы по ВСЕМ товарам нужного года, а потом уже этот подзапрос прицеплять к таблице товаров, попутно фильтруя по "коду группы". ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 09.03.18 13:47 |
Re: Помогите с SQL запросом | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
На жаль, попытки оптимизировать SQL запрос не привили к желаемому результату. Мой первый SQL запрос работает быстрее на ~30% Все таки он больше отсекает ненужных записей. PS.Не видя структуру базы данных, и ее записей, трудно подсказать как оптимизировать запрос. Сейчас, попробую разобраться с кодом от Igor Korolyov... Исправлено 1 раз(а). Последнее : ZenTigra, 09.03.18 14:17 |
Re: Помогите с SQL запросом | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Надеюсь у тебя в поле даты не записано на самом деле дробное число вида MM.YYYY - иначе извини, но адекватной оптимизации тебе не видать как своих ушей А "придумщику" такого способа хранения даты (пусть даже только года и месяца) стоит глаз на ж*пу натянуть
------------------ WBR, Igor |
Re: Помогите с SQL запросом | |
---|---|
ZenTigra Сообщений: 514 Дата регистрации: 03.12.2004 |
Та нет, то я так написал, чтоб кода в примере меньше было...
|
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
да все мы писали ... чего уж ))) но есть куда смотреть/расти
|
Re: Помогите с SQL запросом | |
---|---|
AndyNigmatec Автор Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
и еще, (пардон за 100500-ый повтор) ежели данных реально много - может есть резон таки перейтить на каку-либо СУБД "повзрослее" оставив "на пока" клиента на фоксе? Уверяю, очень многое станет куда проще (и быстрее) несмотря на кажущийся монструозным объем переделок в коде клиента ... ну если конечно он не совсем через жопу написен
|
© 2000-2024 Fox Club  |