Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > ошибка с LEFT JOIN в MySQL 5


Автор: MyDarkSide 21.5.2008, 21:55
Не давно столкнулся с ошибкой, после перехода провайдера на MySQL 5 :

Код

SQL Error : 1054 Unknown column 'f1.file_id' in 'on clause'

SELECT f1.*, AVG(r.rate_point) AS rating, COUNT(r.votes_file) AS total_votes, u.user_id, u.username, c.cat_id, c.cat_name, c.cat_allow_ratings, c.cat_allow_comments FROM phpbb_pa_files AS f1, phpbb_pa_cat AS c LEFT JOIN phpbb_pa_votes AS r ON f1.file_id = r.votes_file LEFT JOIN phpbb_users AS u ON f1.user_id = u.user_id WHERE c.cat_id = f1.file_catid AND f1.file_approved = '1' GROUP BY f1.file_id ORDER BY file_dls DESC LIMIT 0, 10


хотя все поля в таблицах ествественно есть - на 4 мускуле работало замечательно.

Побродил по просторам интернета - оказывается такая проблема постигла не только меня, но дельных советов не нашел, тока намеки на новый стиль оптимизации запросов в 5 мускуле.

Вообщем пару часов мучений и игры в наперстки с SQL запросом ничего не дало.
На следующий день (утро вечера мудрЁнее smile )  попробывал последнее средство - переставил назвния таблиц в выражении FROM:
Код

FROM phpbb_pa_files AS f1, phpbb_pa_cat AS c

на:
Код

FROM  phpbb_pa_cat AS , phpbb_pa_files AS f1

и вуаля!  smile  заработало!

Так что имейте ввиду в MySQL5 порядок перечисления таблиц в выражении FROM и LEFT JOIN  должен совпадать !

Автор: Sannis 21.5.2008, 22:21
Да, либо можно заключить список в скобки:
Код

FROM (phpbb_pa_files AS f1, phpbb_pa_cat AS c)

Автор: MyDarkSide 21.5.2008, 22:29
Цитата

Да, либо можно заключить список в скобки:

вот этого не знал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)