powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение двух sql запросов
9 сообщений из 9, страница 1 из 1
Объединение двух sql запросов
    #39489473
Имеются два запроса. Отличия всего в одном значении.
Как бы их сложить и объединить в один запрос?
Код: plsql
1.
2.
3.
4.
5.
SELECT tblUsers.UserName,
(select sum(tblSales.SaleAmount) from tblTabel 
 Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
 where tblUsers.UserName = tblTabel.UserNameZamena1) as Сумма
 FROM tblUsers 


Код: xml
1.
2.
3.
UserName  Сумма
 Вася         1
 Петя         10


Второй
Код: plsql
1.
2.
3.
4.
5.
SELECT tblUsers.UserName,
(select sum(tblSales.SaleAmount) from tblTabel 
Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
where tblUsers.UserName = tblTabel.UserNameZamena2) as Сумма
FROM tblUsers 


Код: xml
1.
2.
3.
UserName  Сумма
 Вася         5
 Петя         1


В итоге нужно один запросом получить
Код: xml
1.
2.
3.
UserName Сумма
 Вася         6
 Петя         11
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489474
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще всего юнионами
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select z.UserName, sum(z.Сумма) as Сумма
from
(SELECT tblUsers.UserName,
(select sum(tblSales.SaleAmount) from tblTabel 
 Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
 where tblUsers.UserName = tblTabel.UserNameZamena1) as Сумма
 FROM tblUsers
UNION ALL
SELECT tblUsers.UserName,
(select sum(tblSales.SaleAmount) from tblTabel 
Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
where tblUsers.UserName = tblTabel.UserNameZamena2) as Сумма
FROM tblUsers) z
group by z.UserName
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489480
Если я правильно испытал ваш запрос, то тогда и суммы нет и выводится дважды.
Код: html
1.
2.
3.
4.
5.
UserName  Сумма
 Вася         1
 Петя         10
 Вася         5
 Петя         1
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489483
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк Антон,

в продолжение, самое легкое:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select y.UserName, sum(y.Сумма)  
from (select z.UserName, sum(z.Сумма) as Сумма
from (SELECT tblUsers.UserName, (select sum(tblSales.SaleAmount) from tblTabel 
 Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
 where tblUsers.UserName = tblTabel.UserNameZamena1) as Сумма
 FROM tblUsers
UNION ALL
SELECT tblUsers.UserName, (select sum(tblSales.SaleAmount) from tblTabel 
Left Join tblSales on tblTabel.TabelDate = tblSales.DocumentDate 
where tblUsers.UserName = tblTabel.UserNameZamena2) as Сумма
FROM tblUsers) z
group by z.UserName) as y
group by y.UserName


но я бы подумал над самими запросами-источниками. Может их можно как то объединить, раз используется left join
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489485
Источники
Код: xml
1.
2.
3.
tblUsers  UserName
              Вася
              Петя


Код: plsql
1.
2.
3.
tblSales   DocumentDate     SaleAmount
             14.07.2017        10
             15.07.2017         5


Код: xml
1.
2.
3.
tblTabel   TabelDate    UserNameZamena1    UserNameZamena2
           14.07.2017       Вася              Дима
           15.07.2017       Петя              Дима



Цель
Код: xml
1.
2.
3.
Вася 10
Петя 5
Дима 15
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489486
Всё это лишь часть ещё большего запроса, поэтому менять источники вряд ли возможно. И все три таблицы нужны.
Выводит всех пользователей, и сумму продажи за каждый отмеченный в табеле день.
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489496
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT UserName, Sum(SaleAmount) 
FROM
(SELECT *
 FROM (tblTabel INNER JOIN tblSales ON tblTabel.TabelDate=tblSales.DocumentDate) 
 INNER JOIN tblUsers ON (tblTabel.UserNameZamena1=tblUsers.UserName) OR
 (tblTabel.UserNameZamena2=tblUsers.UserName)) AS Q
GROUP BY UserName;
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489497
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Литвинюк АнтонЕсли я правильно испытал ваш запрос, то тогда и суммы нет и выводится дважды
Такое может быть только в том случае, если был "испытан" только подзапрос с юнионом, без внешнего селекта с группировкой. Группировка по Username просто не позволит дважды вывести одно и то же имя.
...
Рейтинг: 0 / 0
Объединение двух sql запросов
    #39489509
__Michelle
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT UserName, Sum(SaleAmount) 
FROM
(SELECT *
 FROM (tblTabel INNER JOIN tblSales ON tblTabel.TabelDate=tblSales.DocumentDate) 
 INNER JOIN tblUsers ON (tblTabel.UserNameZamena1=tblUsers.UserName) OR
 (tblTabel.UserNameZamena2=tblUsers.UserName)) AS Q
GROUP BY UserName;



Всем спасибо! Вот то что нужно было. Забыл про существование OR :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение двух sql запросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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