Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение двух sql запросов / 9 сообщений из 9, страница 1 из 1
15.07.2017, 11:28
    #39489473
Объединение двух sql запросов
Имеются два запроса. Отличия всего в одном значении.
Как бы их сложить и объединить в один запрос?
Код: 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
15.07.2017, 11:39
    #39489474
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух sql запросов
Проще всего юнионами
Код: 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
15.07.2017, 12:07
    #39489480
Объединение двух sql запросов
Если я правильно испытал ваш запрос, то тогда и суммы нет и выводится дважды.
Код: html
1.
2.
3.
4.
5.
UserName  Сумма
 Вася         1
 Петя         10
 Вася         5
 Петя         1
...
Рейтинг: 0 / 0
15.07.2017, 12:17
    #39489483
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух sql запросов
Литвинюк Антон,

в продолжение, самое легкое:
Код: 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
15.07.2017, 12:32
    #39489485
Объединение двух sql запросов
Источники
Код: 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
15.07.2017, 12:37
    #39489486
Объединение двух sql запросов
Всё это лишь часть ещё большего запроса, поэтому менять источники вряд ли возможно. И все три таблицы нужны.
Выводит всех пользователей, и сумму продажи за каждый отмеченный в табеле день.
...
Рейтинг: 0 / 0
15.07.2017, 13:02
    #39489496
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух sql запросов
Код: 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
15.07.2017, 13:05
    #39489497
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух sql запросов
Литвинюк АнтонЕсли я правильно испытал ваш запрос, то тогда и суммы нет и выводится дважды
Такое может быть только в том случае, если был "испытан" только подзапрос с юнионом, без внешнего селекта с группировкой. Группировка по Username просто не позволит дважды вывести одно и то же имя.
...
Рейтинг: 0 / 0
15.07.2017, 13:52
    #39489509
Объединение двух sql запросов
__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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение двух sql запросов / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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