|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.12.2015, 11:44 | #1 |
Пользователь
Регистрация: 20.03.2009
Сообщений: 99
|
Выбрать записи исключая при этом другие
снова я о своем)
есть таблица прихода/расхода PRIHRASH есть поле MAINSTATE которое принимает 2 значения (1 - приход, 2 - расход) есть серийный номер товара и например получается такая табличка serial count MainState A001 1 1 A001 1 2 A002 1 1 A003 1 1 Из которой видно, что товар А001 пришел и его потом забрали, а товар А002 и А003 пришел и его ни кто не забирал Как сделать запрос который выбирал бы все записи у которых mainState = 1 (приход), а потом удалял бы из этого списка те у которых mainState = 2? но при этом с учетом поля serial В общем что бы в списке результата были только остатки A002 и A003? |
12.12.2015, 11:53 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
СУБД какая?
Вложенные запросы поддерживает? если вкратце, то нужно сгруппировать таблицу по полю Serial, просуммировать все значения count для MainState =1(приход) и отнять сумму значений Count для MainState =2(расход), отобразить все записи, где полученная разность не равна нулю (кстати, если получится (вдруг) значение меньше нуля - то это признак ошибки в данных - отдали больше, чем пришло. p.s. название поля count выбрано плохо, оно совпадает к ключевым словом SQL, потенциально возможны баги и косяки... я бы переименовал поле, если это возможно, конечно. |
12.12.2015, 12:19 | #3 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
Having .
|
12.12.2015, 12:54 | #4 |
Пользователь
Регистрация: 20.03.2009
Сообщений: 99
|
БД FireBird 2.5
если можно примерчик Последний раз редактировалось Stilet; 12.12.2015 в 16:11. |
12.12.2015, 14:00 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
что насчёт count ?
http://www.ibase.ru/firebird/Firebir...erence_RUS.pdf Цитата:
тогда попробуйте выполнить такой SQL запрос: Код:
Последний раз редактировалось Stilet; 12.12.2015 в 16:11. |
|
12.12.2015, 14:12 | #6 | |
Пользователь
Регистрация: 20.03.2009
Сообщений: 99
|
Цитата:
всё получилось Serge_Bliznykov спасибо Вам огромное Последний раз редактировалось Stilet; 12.12.2015 в 16:11. |
|
12.12.2015, 14:35 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
всегда пожалуйста!
|
12.12.2015, 14:45 | #8 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
12.12.2015, 15:02 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
хороший вопрос.
если бы меня спросили, что дальше, я бы предложил это всё во вложенный подзапрос перенести, а во внешнем сделать условие where QuantityGoods<>0 но интересно, как автор решил этот вопрос... спасибо. я не знал, как FireBird воспримет, поэтому перестраховался чуток... |
12.12.2015, 22:31 | #10 |
Пользователь
Регистрация: 20.03.2009
Сообщений: 99
|
ну с этим то разобраться можно, еще ни как не решал если честно, но думаю можно было бы. Либо запихнуть в ХП и вызывать с условием как написал Serge_Bliznykov либо прямо в запросе вложенный подзапрос
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
выбрать ячейки а считать другие ячейки | BigVito | Microsoft Office Excel | 5 | 22.12.2012 18:56 |
При освобождении обьекта TThread, он вешает всю программу. При этом код Execute у TThread уж выполнился.. | Человек_Борща | Общие вопросы Delphi | 23 | 30.11.2011 09:18 |
игра - пушка стреляет ядром и при этом надо выбрать скорость и угол. посередине стоит преграда | hasana | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.05.2010 01:02 |
Выбрать повторяющиеся записи | Andrei | SQL, базы данных | 2 | 13.09.2007 14:28 |
Как выбрать при помощи SQL записи из набора данных | pris | БД в Delphi | 4 | 22.05.2007 11:24 |