Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2019, 04:21   #1
Александр19922
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 4
По умолчанию Выборка данных

Добрый день уважаемые посетители форума.
Нужен Ваш совет в написании выборки.
Есть таблица приход, со столбцами:
id = id клиента внесшего деньги
pay_id = id платежа
summ = сумма платежа

id pay_id summ
-------------------------
1 1 30
1 2 -30
1 3 15
-------------------------
2 4 15
2 5 15
2 6 -15
-------------------------
3 7 33
3 8 -33
3 9 77

Задача такова, нужно вывести id тех внесенных сумм, значение которых не равно отрицательным (группируем по клиент id). При этом (см. на клиента с id=2), учесть то, что суммы могут быть одинаковыми (15 = abs(-15)).
Результат должен быть таким:
id pay_id summ
-------------------------
1 3 15
-------------------------
2 4 15
-------------------------
3 9 77

Моих знаний в select пока недостаточно, чтобы найти решение. Поэтому я буду весьма признателен, если у Вас получится мне помочь.
Александр19922 вне форума Ответить с цитированием
Старый 15.03.2019, 08:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чем 2 4 15 лучше 2 5 15?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.03.2019, 17:21   #3
Александр19922
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 4
По умолчанию

Лучше тем, что 2 4 15 на данный момент имеются в наличии, а 2 5 15 - были выведены платежом 2 6 -15.
Александр19922 вне форума Ответить с цитированием
Старый 15.03.2019, 17:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Александр19922 Посмотреть сообщение
Лучше тем, что 2 4 15 на данный момент имеются в наличии, а 2 5 15 - были выведены платежом 2 6 -15.
где это видно в БД?
может как раз 4 15 выведены платежом 6 -15, а 5 15 как раз и есть в данный момент в наличии?

и Вы не допускаете, что может быть три суммы по +5 и одна -15 ?
или вообще три суммы по +7 и одна -15 ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2019, 11:01   #5
Александр19922
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 4
По умолчанию

Лучше тем, что 2 4 15 на данный момент имеются в наличии, а 2 5 15 - были выведены платежом 2 6 -15.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
где это видно в БД?
может как раз 4 15 выведены платежом 6 -15, а 5 15 как раз и есть в данный момент в наличии?

и Вы не допускаете, что может быть три суммы по +5 и одна -15 ?
или вообще три суммы по +7 и одна -15 ?
Каюсь, что изначально мог ввести Вас в заблуждение:
"может как раз 4 15 выведены платежом 6 -15, а 5 15 как раз и есть в данный момент в наличии?" - такое может быть. Выборка должна исключить либо эту пару:
2 5 15
2 6 -15
Либо эту:
2 4 15
2 6 -15
И оставить либо 2 5 15 либо 2 4 15.

"и Вы не допускаете, что может быть три суммы по +5 и одна -15 ?
или вообще три суммы по +7 и одна -15 ?"

Такого в существующей схеме данных быть не может, при пополнении на определенную сумму платеж может выводиться исключительно той же суммой с отрицательным значением.
То есть, если будет три платежа +5, то и вывести их можно тремя платежами -5.
Александр19922 вне форума Ответить с цитированием
Старый 16.03.2019, 12:09   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В сиквеле по приведенным данным многоэтажный запрос можно сделать. Но если добавить еще пару строчек типа 2 10 -15 и 2 11 15, то все рухнет и придется цикл писать с курсорами. Сомнительно что и CTE поможет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2019, 18:09   #7
Александр19922
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В сиквеле по приведенным данным многоэтажный запрос можно сделать. Но если добавить еще пару строчек типа 2 10 -15 и 2 11 15, то все рухнет и придется цикл писать с курсорами. Сомнительно что и CTE поможет
А каким образом можно реализовать цикл с курсорами в таком случае?
Александр19922 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных nVz БД в Delphi 9 05.01.2013 16:40
выборка из данных Артл Microsoft Office Excel 4 25.11.2011 20:05
Выборка данных в БД (ADO) Makoto2005 БД в Delphi 0 01.06.2010 13:38
Выборка данных segail Microsoft Office Excel 4 08.02.2010 16:37
Выборка данных ADRENALIN86 Microsoft Office Excel 1 13.08.2009 15:51