Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL-запрос (объединение двух запросов), ... и группировка 
V
    Опции темы
chip_and_dayl
Дата 15.5.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Помогите мне добрые люди полезным советом.

Есть у меня две таблицы, созданы в СУБД Access 2002:

user posted image

Результатом должна быть разница между таб.1 и таб. 2, то есть Приход.Количество-Расход.Количество=Результат.Количество.

user posted image

Я почти сделал это с помощью объединения двух запросов: 1-запрос: отбирает кода товаров с таб. 1, которые входят в диапазон дата_Начальная и дата_конечная, после чего группируются данные; 2-запрос: тоже самое, только проделано со второй таблицей, плюс поле Количество умножено на -1.
Вид запроса на языке SQL:

Код

ServerData2.ADOQuery2.SQL.Text:=
   'Select Приход.Код, Приход.Название, Sum(Приход.Количество) from Приход
     where  Приход.Дата>=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker1.Date) + '# and Приход.Дата<=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker2.Date) + '# group By Приход.Код,Приход.Название  
                 union all ' +
    'Select Расход.Код, Расход.НАзвание, Sum(Расход.Количество)*(-1) from РАсход 
      where  Расход.Дата>=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker1.Date) +
        '# and Расход.Дата<=#'+ FormatDateTime('mm-dd-yyyy', DateTimePicker2.Date) + '# group By Расход.КОд, Расход.Название order by 1';


В итоге я получил 

user posted image

Вопрос. Можно как-то еще раз сгруппировать результат двух объдененных запросов, чтобы получить результат как в Таб. 3?
или может вы знаете другой вариант получения желаемого результата?smile

Это сообщение отредактировал(а) chip_and_dayl - 15.5.2009, 16:20


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Kbl4AH
Дата 19.5.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



не думая можно так:
Код

select код, название, sum(количество) from
(select код, название, sum(количество) as количество from приход group by код, название
union all
select код, название, (-1) * sum(количество) from расход group by код, название)
group by код, название


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.