MySQL Не уникальная таблица / псевдоним
Я посмотрел на ответы других людей, имеющих такую же проблему, но я не могу понять, как исправить "Неуникальная таблица / псевдоним".
SELECT m.*, u.*
FROM ".TABLE_PREFIX."users_medals u
LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id
WHERE u.user_id IN (".$post['uid'].")
AND m.medal_level = (
SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."medals
LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id
WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id
AND ".TABLE_PREFIX."medals.medal_type = m.medal_type
)
TABLE_PREFIX
это то, что мой скрипт использует для определения префикса таблицы базы данных.
2 ответа
Решение
В вашем подзапросе
СЛЕДУЕТ ПРИСОЕДИНИТЬСЯ к медалью ".TABLE_PREFIX."
Я думаю, что это должно быть
LEFT JOIN ".TABLE_PREFIX."users_medals
В подзапросе у вас есть два medals
таблицы без псевдонимов. я думаю FROM ".TABLE_PREFIX."medals
должно быть FROM ".TABLE_PREFIX."users_medals
:
SELECT m.*, u.*
FROM ".TABLE_PREFIX."users_medals u
LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id
WHERE u.user_id IN (".$post['uid'].")
AND m.medal_level = (
SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."users_medals
LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id
WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id
AND ".TABLE_PREFIX."medals.medal_type = m.medal_type
)