|
|
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Люди, помогите. Не хватает знания. Есть следующий запрос "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р. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 21:52:29 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvana, В смысле подправить? Он не рабочий. Нужно угадать где какое поле иои что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 22:08:51 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Сделать представление с группировкой по полям контрагент и признак документа, а потом сджоинить самр на себя, чтоб в одной строчке было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 22:36:16 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pallaris, это я понимаю. Мозгов не хватате. Ну или опыта. Можете накидать пример? запрос рабочий, просто я привел его в качестве примера. Пытаюсь его переделать , что бы он выводил указанные выше итоги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 22:40:40 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvana Пытаюсь его переделать , что бы он выводил указанные выше итоги. Тут нужно 3 этапа 1. Для каждого контрагента посчитать сумму по накладным - 1ый запрос 2. Посчитать сумму по рко - 2оф запрос 3. Объединить результаты - 3ий запрос Вот идея, развивай Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 22:58:23 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvana, Уточню по запросу. Указанный выше запрос-рабочий. Его нуно переделать, так, чтобы в итоге выводилась указанная в теме таблица. понимаю что через вложенный запрос и UNION нуно ваять. Мало с запросами работал, просто не хватает опыта и знаний. Мне бы простенький пример, дальше сам докумекаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 23:01:08 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pallaris, спас, завтра попробую. Идею понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 23:06:08 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvana, Я так понимаю, тебе нужно что-то типа PIVOT (cross-tab) ? В чистом чиде ни в MySQL, ни в SQLite их нет, но можно эмулировать на запросе с CASE + GROUP BY. Как вариант реализации З.Ы. Cross posting - не хорошо... Но это модераторы пусть разбираются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 05:52:38 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, пробовал извращаться через case и grup , не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 09:32:54 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
PumbanirvanaДобрый Э - Эх, пробовал извращаться через case и grup , не получилось.Ошибка в 17-й строке? Правильный ответ 42? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 12:10:08 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, недопонял. что за 17 строка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 14:16:35 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvanaнедопонял. что за 17 строка? тонкий намек: если хочешь больше помощи, то давай больше информации о проблеме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 15:04:50 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pallaris, постараюсь объяснить поподробнее Указанный запрос-рабочий, но его треба переделать, так что бы он выдавал итоги как я указал в самом начале. Я уже пробовал, но не получается. и знания и опыта не хватает. т.е. вышеуказанный запрос выдает следующее (пробовал и группировку и case ) контрагент---|-накладная-|-ПКО-|РогаИкопыта-|----254------|---0--| РогаИкопыта-|----0---------|-587-| Хронус--------|----0---------|-755-| Хронус--------|----411------|--0--| А требуется контрагент---|-накладная-|-ПКО-|РогаИкопыта-|----254------|---587--| Хронус--------|----411------|-755-| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 17:42:36 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvanaт.е. вышеуказанный запрос выдает следующее (пробовал и группировку и case ) т.е. показать, что пробовал - тоже не хватает опыта? ну, дело твое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 17:52:50 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
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--| т.е. выводит первый контрагент и суммы по всем накладным и пко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 19:50:18 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvanagroup BY dj.idBuyPoint, dj.idOperation уберите группировку по ид операции, а первую оставьте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 07:12:12 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
tanglir, не пойдет. У меня должны быть два столбца -Накладные и ПКО А под ними сумма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 11:35:10 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
Pumbanirvanaне пойдет. У меня должны быть два столбца -Накладные и ПКО а ты попробуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 11:46:58 |
|
||
|
Люди, помогите с запросом!
|
|||
|---|---|---|---|
|
#18+
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 --" ; тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 12:37:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38947680&tid=1833258]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 347ms |

| 0 / 0 |
