Объединение таблиц и вычитание

slip

Guest
Объединение таблиц и вычитание

Попробую объяснить что мне нужно:

У нас есть таблицы table1, table2, table3 в каждой по 2 поля (id & pole). Все они связываются через id. Мне нужно выполнить примерно следующее:

select SUM(table1.pole-table2.pole-IFNULL(table3.pole,0)) AS result

этим мы пытаемся отнять от table1.pole поле table2.pole и если не найдена запись поля
table3.pole присваеваем ему 0 и все равно отнимаем, получается table2.pole,table3.pole отнимаем от table1.pole

дальше нужно объеденить 3 таблицы по полю ID

WHERE table1.id = table2.id...

а вот как объеденить третью таблицу если у нее такой же ID? Как я понял нельзя сделать дальше table2.id = table3.id, а как быть?

Далее мне нужно результат работы result проверить на то что бы он не был меньше или
не равнялся нулю, делаю так:

GROUP BY table1.pole
HAVING result > 0

не работает, как быть?
 

Fireworm

Новичок
Re: Объединение таблиц и вычитание

Автор оригинала: slip
Как я понял нельзя сделать дальше table2.id = table3.id, а как быть?
Кто Вам такое сказал? Объединяйте на здоровье.

Оператор SUMM в вашем случае просуммирует все записи по правилу описанному в скобках.

Если необходимо получить соответствия id - сумма, то лучше сделать так:

SELECT table1.id, (table1.pole-table2.pole-IFNULL(table3.pole,0)) result FROM table1, table2, table3 WHERE table1.id=table2.id AND table2.id=table3.id HAVING result > 0
 

slip

Guest
Блин...я думал я сума сойду...в чем трабла...Если в таблице нет НИ ОДНОЙ ЗАПИСИ (строки), то есть она ВООБЩЕ пустая то MySQL не решает эту задачу НИ КАК....то есть для выполнения какого либо условия (как я понял) в таблице должна присудствовать как минимум одна запись даже с неверным условием...вот
 
Сверху