2012-05-10 3 views
0

Пытается суммировать несколько сумм из разных таблиц с разными условиями для каждой таблицы.Сумма MySQL сумм сумм с разными статьями где

Вот мои 3 суммы:

SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0'; 
SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0'; 
SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f'; 

Результат должен быть (first sum) - (second sum) - (third sum).

ответ

3

MySQL поддерживает базовые операции, так что вы должны быть в состоянии сделать что-то просто:

SELECT (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0') - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0') - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f'); 

Я уверен, что это может быть оптимизировано, но это должно дать вам то, что вам нужно (и без лучшей информации об отношениях, оптимизации будет сложно).

+0

Спасибо за попытку. Все еще говорит, что «ни одна база данных не выбрана». –

+0

все 3 таблицы в той же базе данных? вы пробовали использовать «имя базы данных»? – MaddHacker

+0

Боже, это было глупо с моей стороны. Не выбрал db в phpmyadmin. –

1

Вы можете просто сделать каждый из этих запросов подзапросов на внешний запрос, который выполняет нужное суммирование:

SELECT 
    (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0') 
    - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0') 
    - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' 
     AND 2column3 = 'w' AND 2column4 != 'f'); 
+0

Спасибо за попытку, но «база данных не выбрана». Человек, я надеялся, что все так просто. –

+0

@ user1382306: Ну, если вы не выбрали нужную базу данных, ваши исходные операторы SELECT не будут успешными. Укажите имя своей базы данных при подключении или введите инструкцию '' USE' (http://dev.mysql.com/doc/refman/5.0/en/use.html). – eggyal

+0

Боже, это было глупо с моей стороны. Не выбрал db в phpmyadmin. –

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