Тривильная проблема от ПолногоЧайника

ПолныйЧайник
Дата: 15.12.2002 19:15:43
Всем Привет!

проблема есть 2 таблы связанные но полю каждая имеет числовое поле, нужно вычислить сумму этих полей в выборке по какому то условию (например дате, это не важно главное что оно есть(тоесть вычисляем не всю таблицу) )

я накатал
~~~
select sum(t1._total), (select sum(t2._total) from t2 where t2._id2 = t1._id2) from t1
where t1._id1 = 1
~~~
структура табл:
t1
_id1|_id2|_total

t2
_id2|_total

связка по полю _id2

Спасибо

глянте пожалуста что не так?
dkstranger
Дата: 15.12.2002 19:24:39
Ошибка в синтаксисе.

Надо

select sum(t1._total), sum(t2._total) from t1,t2 where
t2._id2 = t1._id2 and t1._id1 = 1

Только ты уверен, что тебе именно это нужно?
Очень похоже, что нет :)
Сформулируй четче, что хочешь
dkstranger
Дата: 15.12.2002 19:33:14
Дело в том, что формально твой скрипт выдаст сумму всех
выбранных записей.
Если у тебя соотношение много к одному (t2 - много, t1- один),
то в результате у тебя будет t1._total*n и сумма t2._total.

Если тебе нужно только сумма t2._total, то
select sum(_total) from t2 where
_id2 in (select _id2 from t1 where t1._id1=1)


Если тебе нужно еще и значение t1._total, то проще всего

select max(t1._total), sum(t2._total) from t1,t2 where
t2._id2 = t1._id2 and t1._id1 = 1
Cat2
Дата: 15.12.2002 19:48:12
Какое отношение между таблицами?
Один к одному?
Один ко многим?
Многие к многим?
MiCe
Дата: 15.12.2002 21:32:40
если отношение 1->M
то
select sum(t1._total), sum(t2._total)
from (select * from t1 where _id1 = 1) t1 join t2 on t1._id2=t2._id2
GROUP BY t1._id2
ПолныйЧайник
Дата: 16.12.2002 09:25:54
из всех полей уникальным является только поле _id2 из таблицы t1
ПолныйЧайник
Дата: 16.12.2002 09:54:31
народ вот что мне было нужно, но както громоздко, можно ли оптимизировать?

~~~

select (select sum(t1._total) from t1 where t1._id1=1), sum(t2._total) from t1
left join t2 on t2._id2=t1._id2
where t1._id1=1

~~~


Спасибо
Cat2
Дата: 16.12.2002 10:25:09