2014-12-02 105 views
1

我需要從屬於同一所有者的2家小公司獲得總成本結果。PHP/MYSQL:從不同表中的2列中獲得總金額

這兩家公司的成本表位於同一個數據庫中。

我會用圖片enter image description here

我需要得到的是最後總(如圖片說明)更好地解釋它。

我可以做2個單獨的查詢,然後作出總和的變量,但我想知道是否有可能得到總結果一個查詢。

在此先感謝

回答

0
SELECT 
(SELECT SUM(neto_amount) FROM fincost1) + (SELECT SUM(neto_amount) FROM fincost2) 
FROM dual 
+0

是什麼'dual'? – Sisir 2015-04-08 05:59:42

+1

DUAL是數據庫中默認存在的特殊的一行,一列表。如果您可以在不使用特定表的情況下運行函數 - 使用雙重函數,因爲無法運行不帶FROM的選擇。 Chchck鏈接:http://www.w3resource.com/sql/sql-dual-table.php – starko 2015-04-08 07:08:13

+0

感謝您的有用信息。您可能想要將其添加到答案本身:) – Sisir 2015-04-08 07:32:16

0

我能理解爲什麼你就費用並行表 - 因爲他們是在安全性和訪問權限方面更簡單。但是,從幾乎所有其他角度(維護,查詢,備份/恢復)來看,最好有一個表格,其中有一列指示「所有者」和/或「公司」。

你可以使用子查詢來做你想做的事情。我喜歡把他們from子句中:

select (amount1 + amount2) as neto_neto_amount 
from (select sum(neto_amount) as amount1 from fin_costs_1) t1 cross join 
    (select sum(neto_amount) as amount2 from fin_costs_2) t2 ; 
+0

試圖使用您的查詢,但得到這個錯誤'每個派生表必須有它自己的別名' – Sisir 2015-04-08 06:44:43

+0

@Sisir。 。 。當使用返回一行的子查詢時,我有一種方法將它們排除在外。 – 2015-04-08 21:55:32

0

是,使用UNIONS

SELECT sum(u.cost) 
FROM (
    SELECT sum(neto_amount) cost 
    FROM fin_costs1 
    UNION 
    SELECT sum(neto_amount) cost 
    FROM fin_costs2 
) u 
0

我敢肯定有這樣做的其他一些方法,但我這樣做的方法是這樣的:

我得到兩個表的總和在兩個不同的SQL SUM功能,如:

SELECT SUM(column_name) FROM table_name1; 


SELECT SUM(column_name) FROM table_name2; 

,只需加在一起,就像$sum1 + $sum2 = $total;

echo $totalsum;

+0

這正是OP說他們已經在做... – CD001 2014-12-02 13:19:06

1
select sum(total) from (
SELECT SUM(column_name) as total FROM table_name1 
union all 
SELECT SUM(column_name) as total FROM table_name2 
) as alias 
+0

非常感謝!這工作 – user2952715 2014-12-02 14:19:09

+0

歡迎:) @ user2952715 – 2014-12-02 17:03:21