Господа, подскажиет пожлста с запросом.

Кирилл А.

Новичок
Господа, подскажите пожлста с запросом.

С наступающим, дорогой all!

Однако отдыхать некогда, от тут загвоздка вышла:

Есть две таблицы:
В первой хранятся данные о некотором событии, в одном из столбцов хранится состояние, т.е. статус. 0 или 1.

В другой таблице содержатся данные юзера которые связаны с
первой таблицей:
id события, id юзера, сумма ставки.

Что нужно получить:
данные в формате: $id юзера, сумма всех ставок на события, для которых выполняется условие статус=1.

Мое решение:
запросом выбрал все события для которых статус=1, затем запросами в цикле выбрал данные юзера и ставки.

Получилось:
Событие1, юзер1, ставка
юзер2,ставка
юзер3, ставка
.....
Событие2, юзер1, ставка
юзер2,ставка
юзер3, ставка
.....

А нужно:
Юзер1, сумма ставок(для событий со статусом=1)
Юзер2, сумма ставок(для событий со статусом=1)
и т.д....

Помогите плиз
 

neko

tеam neko
тебе быстрее помогут если вместо пространных рассуждений ты покажешь реальные таблицы и свои запросы
 

Кирилл А.

Новичок
ок.
структура таблиц:
таблица total_event
поля: id,data,description,result,status

таблица total_bets
поля: id(не совпадает с id первой таблицы),event(id события из первой таблицы), user, points.

Нужно: выбрать юзеров и посчитать сумму points для записей с event status которого в первой таблице=1, и получить в итоге:
user - sum(points)

Вот как то так...

-~{}~ 12.12.04 03:02:

запрос такой:

SELECT * FROM total_events,total_bets WHERE total_events.status=1 (возвращает все записи с нужным status)

затем усложнил чтобы посчитать сумму points:

SELECT user, SUM(points) FROM total_events, total_bets
WHERE total_events.status =1
GROUP BY user

Суммы не верны.... Где вилы?
 

Profic

just Profic (PHP5 BetaTeam)
а кто будет указывать критерий связывания? сейчас у тебя делается декртово произведение таблиц, в результате, естественно, и сумма не правильная
[sql]
SELECT tb.user, SUM(tb.points) AS sumpoints
FROM total_events AS te INNER JOIN total_bets AS tb ON tb.event = te.id
WHERE te.status =1
GROUP BY tb.user
[/sql]
 
Сверху