Привет всем. Есть две таблицы t1 - id | name | sum t2 - name | sum2 Нужно получить сумму сумм из двух таблиц для name. Если запрос Код (Text): SELECT t1.name, SUM(sum+sum2) AS val FROM t1, t2 WHERE t1.name=t2.name GROUP BY t1.name, t2.name то сумма для t1 считается правильно, а для t2 сумма берется столько раз сколько записей name присутствует в t1. Проще говоря если в t1 есть две записи Код (Text): 1 | nic | 10 2 | nic | 10 а в t2 Код (Text): nic | 20 то нужно получить значение 40 (10+10+20), а получаю значение 60 (10+10+20+20) Как получить нужное мне значение?
два запроса.. или объедини таблицу, добавив в нее еще одно поле, указывающее, в какой из двух таблиц запись должна была быть..
Проблему решил так Код (Text): SELECT name, SUM(sum) AS val FROM ( SELECT name, sum FROM t1 UNION ALL SELECT name, sum2 FROM t2 ) AS u GROUP BY name ORDER BY val Но не работает на mysql 4.0, начиная с 4.1 работает.
Возможно так будет быстрее чем UNION а возможно нет Как вариант... Код (Text): SELECT name, (SUM(sum)+(SELECT SUM(t2.sum) FROM t2 WHERE t1.name = t2.name)) AS val GROUP BY name ORDER BY val