Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / приход минус расход равно остаток / 25 сообщений из 29, страница 1 из 2
19.10.2019, 17:11
    #39878654
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Доброго времени суток всем.
есть две таблицы Sql : Prihod и Rashod
структура почти одинакова
Наименование товара (Name), Количество (Quantity), Склад (Sklad) и еще поля, которые в данном запросе не нужны
пишу на Delphi 7 пытаюсь составить sql запрос, который позволит вычислить остаток товара на определенном складе.
в таблице прихода (Prihod) есть Name - Рубашка с Sum(Quantity) = 30 и в таблице расхода (Rashod) есть Name - Рубашка с Sum(Quantity) = 20
нужно вычесть и положить в DBGrid

ADOQuery1.SQL.Add('select Prihod.Name, Sum(Prihod.Quantity) from Prihod where Prihod.Sklad = ' + '''' + Form2.ComboBox1.Text + ''' Group by Name Union select Rashod.Name, -Sum(Rashod.Quantity) from Rashod where Rashod.Sklad = ' + '''' + Form2.ComboBox1.Text + ''' Group by Name');

проблема в том, что выводит данные в следующем виде:
рубашка 30
рубашка -20

ну и по другим наименованиям товара тоже также...
результат нужен такой:
Рубашка 10
...
Рейтинг: 0 / 0
19.10.2019, 17:14
    #39878655
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
...
Рейтинг: 0 / 0
19.10.2019, 17:48
    #39878658
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Код: sql
1.
2.
3.
4.
5.
6.
select X.Name, Sum(P.Quantity) 
from (
  select P.Name, P.Quantity from Prihod P where P.Sklad = :S
  union all
  select R.Name, -R.Quantity from Rashod R where R.Sklad = :S) X
group by X.Name
...
Рейтинг: 0 / 0
19.10.2019, 20:04
    #39878676
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
спасибо, обязательно изучу

ёёёёёAlexeyGantsev,

https://www.sql.ru/docs/sql/u_sql/index.shtml
...
Рейтинг: 0 / 0
19.10.2019, 20:07
    #39878677
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
пишет ошибку: Неправильно определен объект Parameter, представлены несогласованные или неполные сведения...

ЗЫ. правильно ли я понял, что S - стринговое значение моего склада, которое я выбираю из комбобокса?

DimaBr
Код: sql
1.
2.
3.
4.
5.
6.
select X.Name, Sum(P.Quantity) 
from (
  select P.Name, P.Quantity from Prihod P where P.Sklad = :S
  union all
  select R.Name, -R.Quantity from Rashod R where R.Sklad = :S) X
group by X.Name
...
Рейтинг: 0 / 0
19.10.2019, 20:13
    #39878678
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
AlexeyGantsev,

гугли "SQL запросы с параметрами", например - http://ebooks.semgu.kz/content.php?cont=r;1641
...
Рейтинг: 0 / 0
19.10.2019, 20:14
    #39878679
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
AlexeyGantsevесть две таблицы Sql : Prihod и Rashod
1. Это на одну таблицу больше, чем нужно
2. Отлаживать запросы в Delphi - не лучший выбор
3. За имена типа ADOQuery1 надо убивать
4. Динамическое формирование SQL здесь нафиг не нужно
5. Хакеры всего мира благодарят тебя за предоставленные возможности по внедрению.

Это если сходу наиболее очевидные ошибки
...
Рейтинг: 0 / 0
19.10.2019, 20:29
    #39878684
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Наверняка Вы правы, но моя задача не стоит собрать что то масштабное, за что меня хакеры всего мира будут благодарить :)
в общем необходимо реализовать именно так.

softwarerAlexeyGantsevесть две таблицы Sql : Prihod и Rashod
1. Это на одну таблицу больше, чем нужно
2. Отлаживать запросы в Delphi - не лучший выбор
3. За имена типа ADOQuery1 надо убивать
4. Динамическое формирование SQL здесь нафиг не нужно
5. Хакеры всего мира благодарят тебя за предоставленные возможности по внедрению.

Это если сходу наиболее очевидные ошибки
...
Рейтинг: 0 / 0
19.10.2019, 20:32
    #39878685
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Еще вот такое придумал, выдает один вариант, но при подключении второй таблицы (Rashod) сумма прихода возрастает в 4 раза, откуда берутся цифры непонятно :) может у кого-нибудь есть идеи, почему происходит так?

ADOQuery1.SQL.Add('select Prihod.Name, Sum(Prihod.Quantity) - Sum(Rashod.Quantity) from Prihod, Rashod where Rashod.Sklad = ' + '''' + ComboBox1.Text + ''' Group By Prihod.Name');
...
Рейтинг: 0 / 0
19.10.2019, 20:33
    #39878686
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
AlexeyGantsevЕще вот такое придумал, выдает один вариант, но при подключении второй таблицы (Rashod) сумма прихода возрастает в 4 раза, откуда берутся цифры непонятно :) может у кого-нибудь есть идеи, почему происходит так?
...

21997991

И не возвращайся, пока.
...
Рейтинг: 0 / 0
19.10.2019, 21:44
    #39878712
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
пишу на Delphi 7 пытаюсь составить sql запросБред же. Причем тут Делфи ? Это же чистый SQL.
Надо гуглить партионный учет.
Хотя... этот совет услышан не будет. Там все на так просто для новичка.
...
Рейтинг: 0 / 0
20.10.2019, 20:15
    #39878932
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Если кому-нибудь интересно вот рабочий запрос:

ADOQuery1.SQL.Add('select X.Name, Sum(X.Quantity) from (select P.Name, P.Quantity from Prihod P where P.Sklad = ' + '''' + ComboBox1.Text + ''' union all select R.Name, -R.Quantity from Rashod R where R.Sklad = ' + '''' + ComboBox1.Text + ''' ) X group by X.Name');

Спасибо L_argo за " партионный учет".
...
Рейтинг: 0 / 0
20.10.2019, 21:19
    #39878961
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
AlexeyGantsevЕсли кому-нибудь интересно вот рабочий запрос:
Пользуйтесь параметрами
...
Рейтинг: 0 / 0
21.10.2019, 03:44
    #39879029
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Вам отдельная благодарность за ответ, но в силу своей неопытности сразу не смог адаптировать Ваш запрос и только после того как родил свой увидел сходство...

DimaBrAlexeyGantsevЕсли кому-нибудь интересно вот рабочий запрос:
Пользуйтесь параметрами
...
Рейтинг: 0 / 0
22.10.2019, 14:30
    #39879938
qwertEHOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
ТС начали забрасывать помидорами и он не прочитал главное - 2 таблицы приход и расход это неправильно
нужна только 1 таблица движений
в таблице данные с + это приход, с - это расход

если у тебя есть несколько видов прихода\расхода, тогда просто создать справочник, но таблица все равно только одна
...
Рейтинг: 0 / 0
22.10.2019, 14:32
    #39879941
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
qwertEHOK,

главное - убрать Delphi из учебной программы коррекционных школ.
...
Рейтинг: 0 / 0
22.10.2019, 15:30
    #39880006
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
qwertEHOKесли у тебя есть несколько видов прихода\расхода, тогда просто создать справочник, но таблица все равно только одна
Не нужно загонять разные данные в одну таблицу.

Приход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Внутренне перемещение - это движение внутри (со склада на склад)
Возврат - но это ведь не приход, но всё равно в Плюс
Резервация(консервирование) - продукция, которую нельзя расходовать
и т. д.

И всё это загнать в одну таблицу ?
...
Рейтинг: 0 / 0
22.10.2019, 15:49
    #39880022
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
DimaBrПриход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Внутренне перемещение - это движение внутри (со склада на склад)
Возврат - но это ведь не приход, но всё равно в Плюс
Резервация(консервирование) - продукция, которую нельзя расходовать
и т. д.

И всё это загнать в одну таблицу ?
Я-бы сделал подобным-же образом.
Только через развязку в одной (центральной) таблице или вьюхе - общее движение по видам, а за деталями уже ползать в свои таблицы.

ЗЫ. Ещеб остатки на период сделал. Месяц, квартал или год.
...
Рейтинг: 0 / 0
22.10.2019, 15:50
    #39880024
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
Но нужны-ли автору такие навороты?
...
Рейтинг: 0 / 0
22.10.2019, 15:56
    #39880028
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
DimaBrИ всё это загнать в одну таблицу ?
В одной системе, с которой я соприкасался, была такая интересная операция как смешивание. Выглядела она примерно так: на заводе стоит бочка. К ней подходит рабочий, выливает туда ведро бензола марки А. Потом подходит другой рабочий, выливает туда ведро бензола марки Б. А потом подходит третий рабочий и зачёрпывает ведро бензола. Просто, без марки.
...
Рейтинг: 0 / 0
22.10.2019, 16:00
    #39880030
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
softwarer,
...
Рейтинг: 0 / 0
22.10.2019, 16:11
    #39880034
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
ёёёёё,

ну, справедливости ради, в другой системе была операция, которая называлась "Перебивка серийных номеров". Официально. Бизнес-кейс для этой операции был следующий. Привезли аппарат на сервисное обслуживание. Клерк вбивает его номер, а система отвечает: чувак, ты охренел, аппарат с таким номером продан совсем другому клиенту в Урюпинск. И вот тут чуваку нужна кнопка: "Мамой клянусь, серийник именно такой".
...
Рейтинг: 0 / 0
23.10.2019, 08:21
    #39880222
AlexeyGantsev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
wadmanНо нужны-ли автору такие навороты?

Вы правы, на данном этапе это все мне не нужно, но какая задача будет стоят перед проектом в будущем я незнаю, поэтому и есть разделение на две таблицы (чтобы в последующем не загнать самого себя в тупик).
сейчас все что нужно было реализовать я реализовал, дальнейшее развитие проекта будет на усмотрение руководства.

всем огромное спасибо за содействие и объяснения.
...
Рейтинг: 0 / 0
23.10.2019, 08:57
    #39880228
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
DimaBrПриход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Возврат - но это ведь не приход, но всё равно в Плюс
Есть "Направление движения",(+/-)
есть "Вид операции"
Есть "коррсчет", "вид/тип контрагента" (ФЛ, ЮЛ, Статья, сотрудник)
Есть справочники/аналитики/субконто привязанные к этому "коррсчету"
Так что выше вы описали совершенно одинаковые вещи, отличающиеся только типами справочников.

DimaBrВнутренне перемещение - это движение внутри (со склада на склад)
Немного надо подкрутить, добавив "склад получатель"
и определиться с логикой - дублировать или нет эти документы и их строки по приходу.

DimaBrРезервация(консервирование) - продукция, которую нельзя расходовать
Делается не через документы движения.
DimaBrИ всё это загнать в одну таблицу ?
И довольно часто.
...
Рейтинг: 0 / 0
23.10.2019, 09:27
    #39880248
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
приход минус расход равно остаток
982183И довольно часто.
Так и в один компонент можно запихнуть весь функционал целой библиотеки. Главный вопрос - ЗАЧЕМ ?
Есть приходный документ, значит существует и отдельная таблица, описывающая эту сущность. Масштабирование свойств никак не влияет на другие виды документов.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / приход минус расход равно остаток / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]