|
|
|
full outer join
|
|||
|---|---|---|---|
|
#18+
Есть табличка, где каждая строчка описывает приход или расход. Операция - это сгруппированные приход(ы) и расход(ы). Приход может быть без расхода и наоборот (полуоперации). Вот пример исходной таблицы: Код: sql 1. 2. 3. 4. 5. тут N - это id записи T - 1 - это расход, 2 - это приход G - id операции (NOT NULL, все записи с одним значением - одна операция) надо вывести список операций: idОперации | расход(ы) | приход(ы): запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. выдаёт правильный результат. но таблица z получается очень длинной и если делать промежуточный distinct мне кажется неуместным. Нельзя ли достичь такого же проще, с одним join? ...думал, full outer join должен мне помочь, но не соображу, как с его помощью получить строки, в которых G 9 и 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 10:16:59 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
D.U.A.L.надо вывести список операций: idОперации | расход(ы) | приход(ы): так и что должно быть в качестве (ы): количество, список через запятую или где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 10:26:55 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
D.U.A.L.выдаёт правильный результат.Сомневаюсь. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 10:35:49 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
D.U.A.L. запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. выдаёт правильный результат. посмотрите сами, что выдаст ваш запрос, если добавить 1 строку Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вас такой перекрёстный подход устроит разве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 10:54:16 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
EllicСомневаюсь. Там по операции 7 один расход и два прихода. Можно считать допустимым, если в этой ситуации приход будет фигурировать два раза: приход1 - расход2 приход1 - расход5 (в принципе, лучше было бы null-расход2, потому что потом задвоенные приход1 как-то фильтровать придётся), но если это как-то можно в условия объединения запихнуть - совсем хорошо будет. listagg не пойдёт, потому что в реальности кроме id ещё под 20 полей (даты, текст, ссылки всякие...) В пример я даже суммы-валюты не пихал, только id. Я, вроде, разобрался, но не до конца: начнём сначала: есть наша табличка и join "сама с собой": Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Если дописать y.g=z.g, то получается ожидаемая групировка по g Но если дописать y.g=z.g and z.t=1 and y.t=2 то почему-то в левой и правой частях результата появляются ненужные t 2 и 1 По моему разумению уже тут должен быть правильный результат: ожидаю слева t=1 или NULL, справа - t=2 или NULL. Однако правильно становится только после доп. фильтрации: WHERE nvl(z.t, 1)=1 and nvl(y.t, 2)=2 почему "не работает" "and z.t=1 and y.t=2" в объединении? (Вернее, оно работает, просто я не пойму, как.) P.S. Они поставили рекапчу, а я не могу её угадать :-))) может, у меня что-то с куками, но срабатывает она что-то редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 11:59:14 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
D.U.A.L.приход1 - расход2 приход1 - расход5 (в принципе, лучше было бы null-расход2 STFF соединение по порядковому номеру + http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 12:02:08 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
Добрый день. Топикстартер спрашивает о том, как использовать GROUP BY по номеру операции и SUM() по приходу и по расходу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 07:30:22 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
AnSi_SrSUM() по приходу и по расходу.Продолжай. И что будешь суммировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 07:39:38 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
Elic, Код: plsql 1. Вот это через case по типу приход/расход: авторВ пример я даже суммы-валюты не пихал, только id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 07:49:49 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
AnSi_SrВот это через case по типу приход/расход: авторВ пример я даже суммы-валюты не пихал, только id. Это слишком узко. А что ты предлагаешь делать с D.U.A.L.ещё под 20 полей (даты, текст, ссылки всякие...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 08:33:10 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
ElicЭто слишком узко. А что ты предлагаешь делать с ... ещё под 20 полей (даты, текст, ссылки всякие...) А это будут следующие посты, "что мне делать с ошибкой ORA-00979: not a GROUP BY expression". Тогда и посоветуем подумать, что автор хочет получить в итоге выполнения своего запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 09:51:27 |
|
||
|
full outer join
|
|||
|---|---|---|---|
|
#18+
AnSi_SrА это будут следующие посты, "что мне делать с ошибкой ORA-00979: not a GROUP BY expression". Тогда и посоветуем подумать, что автор хочет получить в итоге выполнения своего запроса.Если ты заметил, то множество полей появилось как раз в ответ на группировку. А ты алогично упорствуешь, советуя группировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 10:16:13 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=206&tid=1887672]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
295ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 556ms |

| 0 / 0 |
