Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2016, 18:36   #1
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию Объединить результат двух запросов

Здравствуйте!

Есть два запроса
Код:
SELECT [Finance report registry].ID, [Finance report registry].[Report date], [Finance report registry].Agent, Sum([TTL Fin report доходы].[Sum-TTl amount, XAF])
FROM [Finance report registry], [TTL Fin report доходы]
WHERE [TTL Fin report доходы].ID =[Finance report registry].ID
GROUP BY  [Finance report registry].ID , [Finance report registry].[Report date], [Finance report registry].Agent
с результатом
1.jpg

И
Код:
SELECT [Finance report registry].ID, [Finance report registry].[Report date], [Finance report registry].Agent, Sum([TTL Fin report by inv].[Sum-Sum, XAF])
FROM [Finance report registry], [TTL Fin report by inv]
WHERE [TTL Fin report by inv].ID =[Finance report registry].ID
GROUP BY  [Finance report registry].ID , [Finance report registry].[Report date], [Finance report registry].Agent
с результатом
2.jpg

Как объединить эти запросы в один, чтобы было вот так
3.jpg

Т.е. так, чтобы где есть соответствие по ID вставлялось нужное значение, а где нет, просто пусто оставалось
yulia вне форума Ответить с цитированием
Старый 02.02.2016, 21:33   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1.UNION двух запросов, чтобы в результате получить таблицу Id-Report date-Agent
2.Простой SELECT. запрос п1. как основной а к нему 2 запроса(те кот с полями expr1003 i expr1004) и выбрать связь "все записи с п1 и только те кот совпадают".
Ну как-то так
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.02.2016, 21:52   #3
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
1.UNION двух запросов, чтобы в результате получить таблицу Id-Report date-Agent
2.Простой SELECT. запрос п1. как основной а к нему 2 запроса(те кот с полями expr1003 i expr1004) и выбрать связь "все записи с п1 и только те кот совпадают".
Ну как-то так
А можно, пожалуйста, второй пункт поподробнее? Не могу понять...

С Юнион понятно, получаем общую таблицу, но что это дало не знаю
yulia вне форума Ответить с цитированием
Старый 02.02.2016, 21:53   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так попробуй. Если ACCESS съест
Код:
SELECT [Finance report registry].ID,[Finance report registry].[Report date],[Finance report registry].Agent,
    (SELECT Sum([TTL Fin report доходы].[Sum-TTl amount, XAF])
       FROM [TTL Fin report доходы]
       WHERE [TTL Fin report доходы].ID =[Finance report registry].ID) AS Extr1003,
    (SELECT Sum([TTL Fin report by inv].[Sum-Sum, XAF])
       FROM [TTL Fin report by inv]
       WHERE [TTL Fin report by inv].ID =[Finance report registry].ID) AS Extr1004
  FROM [Finance report registry]
Имена таблиц и полей удручают. Мешка мешкой. И сильно затрудняют работу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.02.2016, 22:04   #5
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так попробуй. Если ACCESS съест
Код:
SELECT [Finance report registry].ID,[Finance report registry].[Report date],[Finance report registry].Agent,
    (SELECT Sum([TTL Fin report доходы].[Sum-TTl amount, XAF])
       FROM [TTL Fin report доходы]
       WHERE [TTL Fin report доходы].ID =[Finance report registry].ID) AS Extr1003,
    (SELECT Sum([TTL Fin report by inv].[Sum-Sum, XAF])
       FROM [TTL Fin report by inv]
       WHERE [TTL Fin report by inv].ID =[Finance report registry].ID) AS Extr1004
  FROM [Finance report registry]
Имена таблиц и полей удручают. Мешка мешкой. И сильно затрудняют работу
Спасибо! Съел. Правда выдает что-то не то, но буду от этого исходить и доводить до ума.
yulia вне форума Ответить с цитированием
Старый 02.02.2016, 22:16   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
А можно, пожалуйста, второй пункт поподробнее? Не могу понять...

С Юнион понятно, получаем общую таблицу, но что это дало не знаю
См архив, я так себе представлял это
Вложения
Тип файла: rar База данных1.rar (17.4 Кб, 27 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 03.02.2016, 06:01   #7
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Доброе время суток
По идее, обычный Left Join
Код:
Select
    [Finance report registry].ID,
    [Finance report registry].[Report date],
    [Finance report registry].Agent,
    Sum([TTL Fin report доходы].[Sum-TTl amount, XAF]) As [Сумма Fin report доходы],
    Sum([TTL Fin report by inv].[Sum-Sum, XAF]) As [Сумма Fin report by inv]
From
(
    [Finance report registry]
Left Join
    [TTL Fin report доходы]
On
    ([TTL Fin report доходы].ID =[Finance report registry].ID)
)
Left Join
    [TTL Fin report by inv]
On
    ([TTL Fin report by inv].ID =[Finance report registry].ID)
Group By
    [Finance report registry].ID,
    [Finance report registry].[Report date],
    [Finance report registry].Agent
Успехов

Последний раз редактировалось AndVGri; 03.02.2016 в 06:08. Причина: А группировку то не написал ;)
AndVGri вне форума Ответить с цитированием
Старый 03.02.2016, 07:30   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По одному ключу по две записи в каждой из таблиц. Какая сумма получится?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2016, 08:55   #9
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Цитата:
По одному ключу по две записи в каждой из таблиц. Какая сумма получится?
Да, спасибо, не обдуманно предложил. Тогда такой вариант
Код:
Select
    TMain.ID,
    TMain.[Report date],
    TMain.Agent,
    TSum1.[Сумма Fin report доходы],
    TSum2.[Сумма Fin report by inv]
From
(
	(Select Distinct
	    [Finance report registry].ID,
	    [Finance report registry].[Report date],
	    [Finance report registry].Agent
	From [Finance report registry]
	) As TMain
Left Join
	(Select
	    [Finance report registry].ID,
	    [Finance report registry].[Report date],
	    [Finance report registry].Agent,
	    Sum([TTL Fin report доходы].[Sum-TTl amount, XAF]) As [Сумма Fin report доходы]
	From
	    [Finance report registry]
	Inner Join
	    [TTL Fin report доходы]
	On
	    ([TTL Fin report доходы].ID =[Finance report registry].ID)
	Group By
	    [Finance report registry].ID,
	    [Finance report registry].[Report date],
	    [Finance report registry].Agent
	) As TSum1
On
    (
	(TMain.ID=TSum1.ID) And
	(TMain.[Report date]=TSum1.[Report date]) And
	(TMain.Agent=TSum1.Agent)
    )
)
Left Join

	(Select
	    [Finance report registry].ID,
	    [Finance report registry].[Report date],
	    [Finance report registry].Agent,
	    Sum([TTL Fin report by inv].[Sum-Sum, XAF]) As [Сумма Fin report by inv]
	From
	    [Finance report registry]
	Inner Join
	    [TTL Fin report доходы]
	On
	    (TTL Fin report by inv].ID =[Finance report registry].ID)
	Group By
	    [Finance report registry].ID,
	    [Finance report registry].[Report date],
	    [Finance report registry].Agent
	) As TSum2
On
    (
	(TMain.ID=TSum2.ID) And
	(TMain.[Report date]=TSum2.[Report date]) And
	(TMain.Agent=TSum2.Agent)
    )

Последний раз редактировалось AndVGri; 03.02.2016 в 08:58.
AndVGri вне форума Ответить с цитированием
Старый 03.02.2016, 17:40   #10
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
См архив, я так себе представлял это
Спасибо за пример! По нему разобралась и получилось!
yulia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение двух запросов Xakand_2009 БД в Delphi 4 10.07.2012 15:05
сложение двух запросов. tema654 Microsoft Office Access 2 09.01.2012 23:09
Объединение двух запросов KBO БД в Delphi 0 27.07.2011 02:25
Связка двух запросов shefus SQL, базы данных 1 11.11.2010 19:56