проблема заключается в том, что таблицы не имеют равное поле. то объединение полей не может быть применено. - user3160725
Если вы хотите, отдельные суммы в одном запросе, вы можете объединить отдельные запросы в один без выполнения JOIN
между двумя таблицами. Есть много способов сделать это, и вы можете выбрать то, что делает большинство смысла для вас:
Индивид суммы следующим образом:
SELECT SUM(c.field_init) FROM Cserv c; --x
SELECT SUM(g.filed_1) FROM Bserv g; --y
SELECT SUM(g.field_2) FROM Bserv g; --z
Метод 1. Вы можете объединить их в подзапросов в основной запрос:
SELECT
(SELECT SUM(c.field_init) FROM Cserv c),
(SELECT SUM(g.filed_1) FROM Bserv g),
(SELECT SUM(g.field_2) FROM Bserv g);
Здесь вы получаете каждую сумму в подзапросе как столбец в основном запросе. Обратите внимание: каждый подзапрос должен иметь ровно один столбец и одну строку.
x y z
Метод 2. Вы можете объединить их агрегацией:
SELECT SUM(sum1), SUM(sum2), SUM(sum3) FROM (
(SELECT SUM(c.field_init) AS sum1, 0 AS sum2, 0 AS sum3 FROM Cserv c)
UNION ALL
(SELECT 0, SUM(g.filed_1), SUM(g.field_2) FROM Bserv g)
);
Здесь, вы получаете эту таблицу в подзапросе:
sum1 sum2 sum3
x 0 0
0 y z
И суммированием сумм в главный запрос:
sum1 sum2 sum3
x y z
Способ 3. Вы можете выполнить объединение:
SELECT SUM(c.field_init) FROM Cserv c
UNION ALL
SELECT SUM(g.filed_1) FROM Bserv g
UNION ALL
SELECT SUM(g.field_2) FROM Bserv g;
В этом случае суммы будут находиться в отдельных строках, но на одной колонке. Вам нужно будет изменить свою логику программы, чтобы читать каждую строку отдельно и назначать их должным образом.
x
y
z
Способ 3 может работать, только если порядок строк гарантирован.Для гарантии, вы можете сделать следующее вместо:
SELECT 1, SUM(c.field_init) FROM Cserv c
UNION ALL
SELECT 2, SUM(g.filed_1) FROM Bserv g
UNION ALL
SELECT 3, SUM(g.field_2) FROM Bserv g;
Результирующее в:
1 x
2 y
3 z
Вы можете быть уверены, чем при первом столбце 2
, второй столбец несет сумму g.filed_1
, и так на.
Вы правы, но как мне решить эту проблему? – user3160725
@ user3160725 см. Обновленный ответ – Henry
проблема в том, что таблицы не имеют равного поля. то объединение полей не может быть применено. – user3160725