![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 15.03.2009
Сообщений: 2
|
![]()
Здравствуйте. Изложу сразу суть вопроса. Есть две таблицы Prihod (N_Prih, Tovar, Kolich) и Rashod (N_Prod, Tovar, Kolich). Надо в новой таблице рассчитать оставшееся количество товара. Я пробовал осуществить это через запрос:
SELECT p.tovar, (SUM( p.kolich ) - SUM( r.kolich )) Vsego FROM prihod p INNER JOIN rashod r ON (p.tovar = r.tovar) GROUP BY p.tovar Но он дает не верные решения, к примеру, один из вариантов: имеется мука в количестве 100 ед., продали 40 ед. после запроса выдает, что осталось 260ед. ![]() Исходил из того, что привоз товара может быть не однократен. Возможно, я замудрил что-то. Подскажите, в чем я ошибся, если была такая тема раскрыта ранее, подскажите её адрес. С уважением Exile |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.01.2009
Сообщений: 116
|
![]()
exile, в Firebird 2.1 (IIF и Derived Tables ("select from (select ...") появились только в 2.1) получилось вот так:
select P.TOVAR, IIF(R.KOLICH IS NULL, P.KOLICH, P.KOLICH-R.KOLICH) from (SELECT TOVAR, SUM(KOLICH) KOLICH from PRIHOD GROUP BY TOVAR) P left JOIN (SELECT TOVAR, SUM(KOLICH) KOLICH from RASHOD GROUP BY TOVAR) R on P.TOVAR=R.TOVAR; но запросец должен быть затратным. Надо либо таблицы регулярно чистить, либо хотя бы ограничения по дате вводить на подзапросы. Последний раз редактировалось Антон Ю.Б.; 15.03.2009 в 12:35. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
exile, а какую СУБД используете?
если допускаются вложенные запросы (select * from (select...)) тогда я бы предложил сначала объединить обе таблицы в одну через union, только kolich из таблицы расход умножил на -1 а потом банальный sum( kolich ) from <объединённая таблица>: Код:
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
![]()
У меня на таблице Paradox получилось так:
Код:
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... ![]() Последний раз редактировалось Yurk@; 15.03.2009 в 22:45. |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 15.03.2009
Сообщений: 2
|
![]()
Всем большое спасибо за помощь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение двух таблиц | jekis2506 | Microsoft Office Excel | 5 | 15.04.2009 08:34 |
SQL запрос из двух таблиц.(сложный) | Miha87 | БД в Delphi | 5 | 10.11.2008 11:04 |
Выорка данных Select из двух связанных таблиц... | hijke | БД в Delphi | 0 | 28.10.2008 08:24 |
Как оптимизировать запрос MySQL с выборкой из двух таблиц. | Johnatan | SQL, базы данных | 6 | 13.04.2008 03:10 |