Как я прокомментировал ваш вопрос на днях, вам не нужно использовать левое соединение в этом примере. Внешние объединения часто выполняются медленнее, чем внутренние, поэтому вы можете повысить производительность, используя простое внутреннее соединение.
Вам потребуется использовать внешнее объединение, только если вам нужно показать всех игроков, даже тех, у кого нет регистрации.
Похоже, что ваш запрос ищет игроков, которые участвовали в командах более чем в одном клубе в этом году (как ваш предыдущий вопрос), а затем выводит некоторые детали их регистрации и названия клуба. Вот как бы я решил этот запрос:
SELECT p.surname, p.name, p.id, r.start_date, r.end_date, c1.short_name
FROM ejl_players p
INNER JOIN ejl_registration r1 ON (r.player_id = p.id)
INNER JOIN ejl_teams t1 ON (r.team_id = t1.id)
INNER JOIN ejl_clubs c1 ON (t1.club_id = c1.id)
INNER JOIN ejl_teams t2 ON (r.team_id = t2.id)
INNER JOIN ejl_clubs c2 ON (t2.club_id = c2.id)
WHERE r.season = 2008
GROUP BY r.player_id, r.team_id
HAVING COUNT(DISTINCT c2.id) > 1;
Это работает в MySQL, потому что MySQL допускает правило с одним значением. То есть столбцы в предложении GROUP BY не обязательно должны совпадать с неагрегированными столбцами, указанными в вашем списке выбора. В других брендах СУБД этот запрос приведет к ошибке.