powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Люди, помогите с запросом!
20 сообщений из 20, страница 1 из 1
Люди, помогите с запросом!
    #38946677
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, помогите. Не хватает знания. Есть следующий запрос
"SELECT" +
" dj.idStatus AS [idStatus]," +
" st.name AS [nmState]," +
" dj.id AS [idDoc]," +
" dj.idRoute AS [idRoute]," +
" dj.idPhysicalPerson AS [idPhysicalPerson], " +
" dj.idOperation AS [idOperation]," + ----- признак документа -2 накладная, 3-рко (расходник)
" dj.idState AS [StatusDoc]," +
" op.shortName AS [docName]," +
" '№' || dj.PrintDocNum AS [docNum]," +
" DATE(dj.OpDate) AS [docDate]," +
" STRFTIME('%H:%M', dj.OpDate) AS [docTime], " +
" dj.idBuyPoint AS [idBuyPoint]," + - контрагенты
" sum(dj.Amount) AS [amount]," +
" dj.Comment AS [comment] " +
"FROM docJournal dj " +
"LEFT JOIN enOperationTypes op ON op.id = dj.idOperation" +
"LEFT JOIN refDocumentStates st ON st.id = dj.idState" +
"WHERE " +
" DATE(dj.OpDate) BETWEEN DATE('" + startDate + "') AND DATE('" + endDate + "')" +
" AND dj.idOperation IN (2, 3)" +
" AND dj.deleted = 0 " +
" AND dj.idStatus = 1 " +
"group BY \n" +
" dj.idBuyPoint, dj.idOperation --";
"ORDER BY \n" +
" dj.OpDate ASC, dj.PrintDocNum ASC"
;

нуно подправить запрос, следующим образом (по сумме документов)

Контрагент---|---Накладная---|----РКОРогаИКопыта-|-2504р.---------|----0р.Хронус------|--2548р.---------|---245678р.ВасяПетя----|--0р.------------|----4569р.Иволга------|--45978----------|---789456р.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946683
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvana,

В смысле подправить? Он не рабочий. Нужно угадать где какое поле иои что?
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946699
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать представление с группировкой по полям контрагент и признак документа, а потом сджоинить самр на себя, чтоб в одной строчке было
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946703
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,
это я понимаю. Мозгов не хватате. Ну или опыта. Можете накидать пример?
запрос рабочий, просто я привел его в качестве примера. Пытаюсь его переделать , что бы он выводил указанные выше итоги.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946709
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvana Пытаюсь его переделать , что бы он выводил указанные выше итоги.

Тут нужно 3 этапа
1. Для каждого контрагента посчитать сумму по накладным - 1ый запрос
2. Посчитать сумму по рко - 2оф запрос
3. Объединить результаты - 3ий запрос
Вот идея, развивай
Код: sql
1.
2.
3.
Select  t0.kontragent, t0.val, t1.val from
 (Select kontragent, sum(amount) as val from ... where type = 1 group by kontragent) as t0 left join
(Select kontragent, sum(amount) as val from ... where type = 2 group by kontragent) as t1 on t0.kontragent = t1.kontragent
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946711
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pumbanirvana,
Уточню по запросу.
Указанный выше запрос-рабочий.
Его нуно переделать, так, чтобы в итоге выводилась указанная в теме таблица.
понимаю что через вложенный запрос и UNION нуно ваять. Мало с запросами работал, просто не хватает опыта и знаний.
Мне бы простенький пример, дальше сам докумекаю.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946714
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

спас, завтра попробую. Идею понял.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946766
Pumbanirvana,

Я так понимаю, тебе нужно что-то типа PIVOT (cross-tab) ?
В чистом чиде ни в MySQL, ни в SQLite их нет, но можно эмулировать на запросе с CASE + GROUP BY.

Как вариант реализации

З.Ы.
Cross posting - не хорошо... Но это модераторы пусть разбираются...
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38946835
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,
пробовал извращаться через case и grup , не получилось.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947048
PumbanirvanaДобрый Э - Эх,
пробовал извращаться через case и grup , не получилось.Ошибка в 17-й строке? Правильный ответ 42?
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947302
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

недопонял. что за 17 строка?
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947391
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvanaнедопонял. что за 17 строка?

тонкий намек: если хочешь больше помощи, то давай больше информации о проблеме
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947666
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

постараюсь объяснить поподробнее
Указанный запрос-рабочий, но его треба переделать, так что бы он выдавал итоги как я указал в самом начале.
Я уже пробовал, но не получается.
и знания и опыта не хватает.
т.е. вышеуказанный запрос выдает следующее (пробовал и группировку и case )

контрагент---|-накладная-|-ПКО-|РогаИкопыта-|----254------|---0--| РогаИкопыта-|----0---------|-587-| Хронус--------|----0---------|-755-| Хронус--------|----411------|--0--|

А требуется

контрагент---|-накладная-|-ПКО-|РогаИкопыта-|----254------|---587--| Хронус--------|----411------|-755-|
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947680
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvanaт.е. вышеуказанный запрос выдает следующее (пробовал и группировку и case )


т.е. показать, что пробовал - тоже не хватает опыта? ну, дело твое
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38947822
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

недопонял
выкладываю

"SELECT" +
" dj.idBuyPoint AS [idBuyPoint]," + - контрагенты
" sum(case when dj.idOperation=2 then dj.Amount else 0 end) AS [amount1]," + ---- накладная рублей
" sum(case when dj.idOperation=3 then dj.Amount else 0 end) AS [amount2]," + ---- РКО рублей
" dj.Comment AS [comment] " +
"FROM docJournal dj " +
"LEFT JOIN enOperationTypes op ON op.id = dj.idOperation" +
"LEFT JOIN refDocumentStates st ON st.id = dj.idState" +
"WHERE " +
" DATE(dj.OpDate) BETWEEN DATE('" + startDate + "') AND DATE('" + endDate + "')" +
" AND dj.idOperation IN (2, 3)" +
" AND dj.deleted = 0 " +
" AND dj.idStatus = 1 " +
"group BY \n" +
" dj.idBuyPoint, dj.idOperation --";
"ORDER BY \n" +
" dj.OpDate ASC, dj.PrintDocNum ASC"

так же пробовал не группировать
//"group BY \n" +
//" dj.idBuyPoint, dj.idOperation --";
тогда выводит следующее

контрагент---|-накладная-|-ПКО-| РогаИкопыта-|----655------|---1342--|

т.е. выводит первый контрагент и суммы по всем накладным и пко
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38948067
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvanagroup BY
dj.idBuyPoint, dj.idOperation уберите группировку по ид операции, а первую оставьте
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38948339
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

не пойдет. У меня должны быть два столбца -Накладные и ПКО
А под ними сумма.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38948369
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pumbanirvanaне пойдет. У меня должны быть два столбца -Накладные и ПКО


а ты попробуй
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38948459
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Люди, всем спасибо за помощь.
Все верно, достаточно было убрать группировку по idOperation
Скидываю конечный результат, может кому пригодиться.
return "SELECT \n" +
" dj.idStatus AS [idStatus], -- если idStatus = 4, то это черновик \n" +
" st.name AS [nmState], -- СОСТОЯНИЕ документа \n" +
" dj.id AS [idDoc], -- id документа пригодится для формирования ссылки \n" +
" dj.idRoute AS [idRoute], \n" +
" dj.idPhysicalPerson AS [idPhysicalPerson], \n" +
" dj.idOperation AS [idOperation], -- id типа документа тоже для формирования ссылки \n" +
" dj.idState AS [StatusDoc], -- ссылки \n" +
" op.shortName AS [docName], -- ТИП документа \n" +
" '№' || dj.PrintDocNum AS [docNum], -- НОМЕР документа \n" +
" DATE(dj.OpDate) AS [docDate], -- ДАТА документа \n" +
" STRFTIME('%H:%M', dj.OpDate) AS [docTime], -- ВРЕМЯ документа \n" +
" dj.idBuyPoint AS [idBuyPoint], -- id торговой точки, на которую оформлен документ \n" +
" SUM(CASE WHEN dj.idOperation = 2 THEN dj.Amount ELSE 0 END) AS [AmountNkl], " +
" SUM(CASE WHEN dj.idOperation = 3 THEN dj.Amount ELSE 0 END) AS [AmountPKO], " +
//" sum(dj.Amount) AS [amount], -- СУММА документа \n" +
" dj.Comment AS [comment] -- КОММЕНТАРИЙ к документу \n" +
"FROM docJournal dj -- ТАБЛИЦА 'Журнал документов' \n" +
"LEFT JOIN enOperationTypes op ON op.id = dj.idOperation -- ТАБЛИЦА 'Типы документов' \n" +
"LEFT JOIN refDocumentStates st ON st.id = dj.idState -- ТАБЛИЦА 'Состояния документов' \n" +
"WHERE \n" +
" DATE(dj.OpDate) BETWEEN DATE('" + startDate + "') AND DATE('" + endDate + "') \n" +
" AND dj.idOperation IN (2, 3) -- исключение служебных документов приложения \n" +
" AND dj.deleted = 0 -- исключение помеченных на удаление документов \n" +
" AND dj.idStatus = 1 -- исключение помеченных на удаление документов \n" +
"group BY \n" +
" dj.idBuyPoint --"
;

тему можно закрывать.
...
Рейтинг: 0 / 0
Люди, помогите с запросом!
    #38948464
Pumbanirvana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,
может нуно куда то галочку за помощь поставить?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Люди, помогите с запросом!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]