Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Добрый день уважаемые посетители форума.
Нужен Ваш совет в написании выборки.
Есть таблица приход, со столбцами:
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, 09:47   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,493
Репутация: 6498
По умолчанию

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

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

Цитата:
Сообщение от Александр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, 12:01   #5
Александр19922
Новичок
 
Регистрация: 15.03.2019
Сообщений: 4
Репутация: 10
По умолчанию

Лучше тем, что 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, 13:09   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,493
Репутация: 6498
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных 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 17:37
Выборка данных ADRENALIN86 Microsoft Office Excel 1 13.08.2009 15:51


03:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru