2015-09-21 2 views
1

У меня есть 2 таблицы, мне нужно суммировать общее значение из каждого столбца цены таблицы. Я провел некоторое исследование Stack, но решения, которые я видел, были слишком длинными и не казались достаточно эффективными. С MySQL я пытаюсь получить общее значение из StoreCoins плюс общее значение из StoreMemorabilia и общее значение из расходных материалов, тогда я хочу получить сумму общего столбца таблицы. Этот первый код в настоящее время не работает ...Добавление общих значений из нескольких таблиц в MySQL с php

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; 
} 

ответ

2

Я надеюсь, что следующее, что вы после:

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

Спасибо! Я тестировал это как второй вариант, и он работает. 2 хорошие способы сделать это. –

0

Изменить запрос, как этот

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

UNION 

SELECT SUM(column) AS value FROM StoreMemorabilia 
) InventoryValue 
+0

Я пробовал, но не повезло. Он не отображается. Просто исчезает. –

+0

@RookieRecruits Можете ли вы опубликовать снимок экрана из ваших таблиц –

+0

Я не могу, кажется, не позволяю мне. –