的問題是表不具有平等的領域。那麼這些字段的聯合就無法應用。 - 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