Помощь по составлению запроса.

SPQR

Новичок
Помощь по составлению запроса.

select tm_payments.id_terminal,
sum(tm_payments.sum1) as sum1,
sum(tm_payments.sum2) as sum2,
sum(tm_payments.sum3) as sum3,
sum(tm_payments.sum4) as sum4,
tm_terms.term_type,
tm_terms.address
from tm_terms,
tm_payments
where tm_terms.id_terminal = 'J041233' and
tm_terms.id_terminal = tm_payments.id_terminal and
unix_timestamp(data) >= '1172696400' and
unix_timestamp(data) <= '1175288400'
group by tm_payments.id_terminal

Вот примерно такой запрос идет, не получается сделать следующее: в таблице tm_payments попадаются повторяющиеся записи(не я ее формирую)...как сделать запрос(см. выше), чтобы не учитывались повторения.
 

SPQR

Новичок
Зря написал ^^, просто эт для конкретного терминала и за конкретное время, это меняется, может условия добавляться, проблема ток не меняется)
 

Bitterman

Новичок
нда? То есть ты утверждаешь, что конкретно этот запрос работает, да? И никаких ошибок не выдает?
 

SPQR

Новичок
да, работает, ток каюсь последнию строку не скопировал:
group by tm_payments.id_terminal
 

Bitterman

Новичок
Угу, с этим значиться разобрались.
Так где конкретно не должны учитываться повторения?
 

SPQR

Новичок
Т.е агрегатные функции суммируют все значения из tm_payments, а как суммировать без учета дублирующих значений(их мало, но они есть, база большая).
 

SPQR

Новичок
Спасибо за ссылку, прочитал, но пока не догнал(
Внутри не пишется DISTINCT. После GROUP BY, тоже не получилось...
 

Bitterman

Новичок
мдам, в документации не было указано, сейчас нашел, что DISTINCT с SUM работает только начиная с 5-го мускула. У тебя судя по всему меньше?
 

SPQR

Новичок
Да нет..не нужны, только, как говорил..не я формирую записи...И постоянно отслеживать их неудобно(каждый день обновление).
 

Bitterman

Новичок
Неудобно, так неудобно. Вложенные запросы 4.1 вроде как поддерживать должен? Тогда можно попробовать как-то так:
SELECT [здесь суммы] FROM ... WHERE tm_payments.id (первичный ключ таблицы tm_payments) IN (SELECT tm_payments.id FROM tm_payments GROUP BY tm_payments.data).
 

chira

Новичок
SPQR
попробуй так складывать:
...
sum(tm_payments.sum1)*COUNT(DISTINCT tm_payments)/COUNT(*) as sum1
...
 

SPQR

Новичок
Спасибо за помощь, не работает. Посмотрел на версию, там 3.23. Обновлю, заработает ^^
 

chira

Новичок
SPQR
ошибка или всё равно неправильно суммирует?
нужно было COUNT(DISTINCT tm_payments.id) или другое которое PRIMARY KEY для таблицы tm_payments
 
Сверху