2016-02-03 2 views
2
SELECT SUM(amount_paid) AS total_session FROM session 
WHERE session.date = '2016-02-03' AND session.payment_status = 'PAID' 
UNION 
SELECT SUM(amount_paid) AS total_subscription FROM subscription 
WHERE subscription.date_enrolled = '2016-02-03' AND subscription.payment_status = 'PAID' 

Я просто хочу, чтобы отобразить результат в двух разных колонках с псевдонимом total_session и total_subscription. Как я могу это сделать с помощью union?как суммировать суммы из двух разных таблиц в одном запросе без использования накидную MySQL

+0

Пожалуйста, не оставить Скриншот. Опубликуйте простой текст, чтобы мы могли вырезать и вставить в sqlfiddle. Еще лучше, сделайте sqlfiddle для нас. – Barmar

+1

Что случилось с использованием 'UNION'? Какой результат вы пытаетесь получить вместо этого? – Barmar

+0

Вы можете сделать это, поставив 2 запроса в качестве подзапросов в одном запросе, но это не будет более эффективным с точки зрения выполнения. – Shadow

ответ

0

В этом случае, вы можете попробовать делать поддельные присоединиться как

SELECT xx.total_session, yy.total_subscription 
FROM (
SELECT '1' as ID, SUM(amount_paid) AS total_session FROM session 
WHERE session.date = '2016-02-03' AND session.payment_status = 'PAID') xx 
JOIN (SELECT '1' as ID, SUM(amount_paid) AS total_subscription FROM subscription 
WHERE subscription.date_enrolled = '2016-02-03' AND subscription.payment_status = 'PAID') yy 
ON xx.ID = yy.ID; 
+1

Зачем вам нужны столбцы «ID»? Просто сделайте 'CROSS JOIN' без условия' ON'. – Barmar

1

Вместо союзной, поставить каждый запрос как подзапрос в главном SELECT

SELECT 
    (SELECT SUM(amount_paid) FROM session 
    WHERE session.date = '2016-02-03' AND session.payment_status = 'PAID') AS total_paid, 
    (SELECT SUM(amount_paid) FROM subscription 
    WHERE subscription.date_enrolled = '2016-02-03' AND subscription.payment_status = 'PAID') AS total_subscription 
+0

Это более читаемо. Спасибо, Бармар! – json

Смежные вопросы