Суммирование двух запросов!
maxwell1988
Дата: 19.06.2009 23:11:53
Помогите пожалуйста построить запрос SQL. БД Paradox, среда Delphi.
Доброго времени суток!
нужна помощь...
есть два запроса, результаты этих запросов - суммы, надо эти две суммы сложить!
SELECT Summa_sdana.Driver, SUM(Summa_sdana.Summa_sdal)
FROM Driver INNER JOIN Summa_sdana ON Driver.Id_driver=Summa_sdana.driver
GROUP BY Summa_sdana.Driver
union
SELECT Zakaz.Driver, SUM(Zakaz.Summa)*Stavka.Procent
FROM List INNER JOIN Zakaz ON List.Id_list = Zakaz.List ,Stavka
GROUP BY Stavka.Summa_ot, Stavka.Summa_do, Zakaz.Driver
HAVING SUM(Zakaz.Summa) BETWEEN Summa_ot AND Summa_do
;
делаю так, но понятно дело, что у меня получается, подобное этому....
driver SUM
1 500
1 300
2 100
2 300
3 100
3 200
а нужно, чтобы получилось...вот так
driver SUM
1 800
2 400
3 300
з.ы. прошу сильна не ругать, я новичок....но есть желание учиться)))
maxwell1988
Дата: 19.06.2009 23:13:50
точнее...
SELECT Summa_sdana.Driver, SUM(Summa_sdana.Summa_sdal)
FROM Driver INNER JOIN Summa_sdana ON Driver.Id_driver=Summa_sdana.driver
GROUP BY Summa_sdana.Driver
union
SELECT Zakaz.Driver, SUM(Zakaz.Summa)*Stavka.Procent
FROM List INNER JOIN Zakaz ON List.Id_list = Zakaz.List ,Stavka
GROUP BY Stavka.Summa_ot, Stavka.Summa_do, Zakaz.Driver, Stavka.Procent
HAVING SUM(Zakaz.Summa) BETWEEN Summa_ot AND Summa_do
;
FlyD
Дата: 19.06.2009 23:21:30
А при чем здесь Delphi?
maxwell1988
Дата: 19.06.2009 23:25:29
FlyD,
реализовывается в делфи))
FlyD
Дата: 19.06.2009 23:29:39
maxwell1988 |
FlyD,
реализовывается в делфи)) |
Построение запроса в контексте топика к Delphi отношения не имеет.
Обратитесь в соответствующий форум.
maxwell1988
Дата: 19.06.2009 23:32:01
FlyD,
сорри
FlyD
Дата: 19.06.2009 23:32:54
По сабжу.
В представленном коде отработка идет по схеме группировка -> объединение. Поменяй
порядок.
maxwell1988
Дата: 19.06.2009 23:37:20
FlyD,
"по схеме группировка -> объединение" - наоборот, это как? сорри, новичок...
FlyD
Дата: 19.06.2009 23:49:20
Ну где то так
SELECT t.Driver, SUM(t.MySum)
FROM
(
SELECT Summa_sdana.Driver, SUM(Summa_sdana.Summa_sdal) as MySum
FROM Driver INNER JOIN Summa_sdana ON Driver.Id_driver=Summa_sdana.driver
GROUP BY Summa_sdana.Driver
union all -- обязательно ALL !!!
SELECT Zakaz.Driver, SUM(Zakaz.Summa)*Stavka.Procent as MySum
FROM List INNER JOIN Zakaz ON List.Id_list = Zakaz.List ,Stavka
GROUP BY Stavka.Summa_ot, Stavka.Summa_do, Zakaz.Driver, Stavka.Procent
HAVING SUM(Zakaz.Summa) BETWEEN Summa_ot AND Summa_do
) t
group by Driver
maxwell1988
Дата: 19.06.2009 23:53:53
FlyD,
пишит sql explorer >>>
Invalid use of keyword.
Token : SELECT
Line Number : 4
((((((((