LEFT JOIN меняет весь результат

Fanamura

Новичок
LEFT JOIN меняет весь результат

PHP:
$query = sprintf("SELECT SUM(event_sum) AS value, p.firstname, p.lastname, t.short_name as team, (SUM(ch.vote_rating) / COUNT(ch.vote_rating)) as star, p.id as id

            FROM #__joomleague_match_events AS me

            LEFT JOIN #__joomleague_players AS p ON me.player_id = p.id            

            LEFT JOIN #__joomleague_playertool AS pt ON me.player_id = pt.player_id AND pt.project_id = me.project_id

            LEFT JOIN #__joomleague_teams AS t ON pt.team_id = t.id

            LEFT JOIN #__joomleague_team_joomleague AS teamtool ON teamtool.team_id = t.id AND teamtool.project_id = me.project_id

            LEFT JOIN #__joomleague_divisions AS jldiv ON jldiv.id = teamtool.division_id

            LEFT JOIN #__joomleague_chara AS ch ON p.id = ch.id_hock

           WHERE  

                 me.event_type_id =%s AND 

                 me.project_id =%s AND

                 ( jldiv.id = $division OR jldiv.parent_id = $division )

        GROUP BY p.id

        ORDER BY value DESC  LIMIT 0 , %s",$eventtype ,$project->id, $limit);
Выводит в row->star то, что нужно, но!
в value результат меняется на мне неведомый, откуда он берется я вообще не понимаю, вместо верного значения в 10 (к примеру), показывается 21 и т.д. Если убрать LEFT JOIN #__joomleague_chara AS ch ON p.id = ch.id_hock то все нормально для value... Вопрос, почему? А что делать?))
 

r4sh

Новичок
из какой таблицы вообще event_sum ?

LEFT JOIN #__joomleague_chara AS ch ON p.id = ch.id_hock
какойто странный LEFT JOIN, не наоборот ли: ch.id_hock = p.id

тоже касается и остальных.

Если у тебя event_sum в таблице #__joomleague_players, то неудивительно, что другое значение. При таком джойне, у тебя выбираются еще записи из таблицы #__joomleague_players.
 

tardis

lazy
какойто странный LEFT JOIN, не наоборот ли: ch.id_hock = p.id
эээ, ты уверен, что есть разница :confused:

-~{}~ 10.11.09 16:21:

Fanamura
что у тебя хранится в поле event_sum?
и что тебе надо получить запросом?
 

Fanamura

Новичок
r4sh
event_sum в таблице #__joomleague_match_events
переписал первую строку как: "SELECT SUM(me.event_sum) AS value, p.firstname, ...
ничего не изменилось.

tardis
Сайт с разделом, где есть статистика хоккеистов, удаления, голы и т.д.

в поле event_sum из таблицы #__joomleague_match_events указывается количество заработанных баллов для каждого события в конретном матче. Я хочу выбрать сумму всех баллов для определенного события у определенного хоккеиста. Ну сделать таблицу бомбардиров и т.д.
А здесь: (SUM(ch.vote_rating) / COUNT(ch.vote_rating)) as star
Вычисляется балл хоккеиста (хоккеистам болельщики выставляют оценки, я получаю среднее арифметическое.
 

tardis

lazy
ты бы для начала убрал группировку, отсортировал бы по игрокам и посмотрел какие баллы для каждого суммируются
и соответственно, какие там лишние
а без структуры таблиц очень сложно что-нить советовать
 
Сверху