MySQL Add Total внизу результата поиска, если найдена одна или несколько записей

У меня ниже оператора SQL для генерации итога в нижней части результатов поиска, но я не хочу отображать Итого, если запись не найдена. Нужна помощь по приведенному ниже заявлению.

SELECT Member_ID, Order_Total, Shipping_Cost, TAX FROM Order Where                 
Order_Total > 100
UNION (
SELECT "Total" as Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX FROM Order Where                 
Order_Total > 100);

Всего 1 ответ


Вам не нужен UNION , вы можете использовать опцию WITH ROLLUP для автоматического суммирования. Если в запросе не выбраны строки, результат будет пустым.

SELECT IFNULL(Member_ID, 'Total') AS Member_ID, Order_Total, Shipping_Cost, TAX
FROM (
    SELECT Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX 
    FROM `Order` 
    Where Order_Total > 100
    GROUP BY Order_ID
    WITH ROLLUP) AS x

Другой способ - сохранить UNION , но добавить предложение HAVING ко второму запросу.

SELECT Member_ID, Order_Total, Shipping_Cost, TAX 
FROM `Order` 
Where Order_Total > 100
UNION (
SELECT "Total" as Member_ID, sum(Order_Total) as Order_Total, sum(Shipping_Cost) as Shipping_Cost, sum(TAX) as TAX 
FROM `Order` 
Where Order_Total > 100
HAVING COUNT(*) > 0);

Есть идеи?

10000