使用php在MySQL中添加多个表的总值

使用php在MySQL中添加多个表的总值,php,mysql,Php,Mysql,我有两个表,我需要汇总每个表价格列的总价值。我对堆栈做了一些研究,但我看到的解决方案太长,似乎没有足够的代码效率。 使用MySQL,我试图从StoreCoins获得总价值,再加上StoreMemorabilities的总价值和supplies的总价值,然后我想要两个表列的总和。第一个代码当前不工作 if($results = $this->dbConn->query("SELECT SUM(column) AS InventoryValue FROM (

我有两个表,我需要汇总每个表价格列的总价值。我对堆栈做了一些研究,但我看到的解决方案太长,似乎没有足够的代码效率。 使用MySQL,我试图从StoreCoins获得总价值,再加上StoreMemorabilities的总价值和supplies的总价值,然后我想要两个表列的总和。第一个代码当前不工作

if($results = $this->dbConn->query("SELECT SUM(column) AS InventoryValue FROM (
                                        SELECT SUM(column) AS value FROM StoreCoins
                                        UNION ALL
                                        SELECT SUM(column) AS value FROM StoreMemorabilia
                                        ) allposts")){
while($data = $results->fetch_assoc()){
    $totalVal = $data['InventoryValue'];
    $totalVal .= ".00";
我需要知道我在上面的代码中做错了什么

另一方面(这与php有关): 我有下面的脚本,一旦返回正确的值,它就决定将逗号放在美元值的何处。我想推荐一种更有效的方法来创建此函数及其结果。switch语句工作得很好,并且做了我需要它做的事情,我只是想用一种更雄辩的方式来写这个

switch(strlen($Val)){
    case 7:
        $rem = substr($Val, 1, 6);
        $Val = substr_replace($Val, ",", 1);
        $Val = $Val.$rem;
        break;
    case 8:
        $rem = substr($Val, 2, 6);
        $Val = substr_replace($Val, ",", 2);
        $Val = $Val.$rem;
        break;
    case 9:
        $rem = substr($Val, 3, 6);
        $Val = substr_replace($Val, ",", 3);
        $Val = $totalVal.$rem;
        break;
    case 10:
        $rem = substr($Val, 1, 10);
        $Val = substr_replace($Val, ",", 1);
        $Val = $Val.$rem;
        $rema = substr($Val, 5, 6);
        $Val = substr_replace($Val, ",", 5);
        $Val = $Val.$rema;
}

像这样更改查询

SELECT SUM(column) FROM ( 
SELECT SUM(column) AS value FROM StoreCoins

UNION 

SELECT SUM(column) AS value FROM StoreMemorabilia
) InventoryValue

我希望以下是您的目标:

select (
    ( select sum(`price`) from `StoreCoins` ) 
        + 
    ( select sum(`price`) from `StoreMemorabilia` )
) as 'total';

我试过了,但没有成功。它不显示。只是消失了。@新手新兵你可以发布你表格的屏幕截图吗?我不能,似乎不允许。@新手新兵你需要用你要计算的表中的列的名称替换子查询中的
,然后,您希望在主查询中通过引用您在子查询中命名的列来求和。@新兵然后在子查询中将
column
更改为
price
,并在顶部查询中将
column
更改为
value
,以求和您的计算列。谢谢!我将此作为第二个选项进行了测试,结果很有效。这有两个好方法。