MySQL Не уникальная таблица / псевдоним - PullRequest
0 голосов
/ 18 августа 2011

Я посмотрел ответы других людей, имеющих такую ​​же проблему, но я не могу понять, как исправить «Неуникальную таблицу / псевдоним».

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 ]

1 голос
/ 18 августа 2011

В вашем подзапросе

LEFT JOIN ".TABLE_PREFIX." Medals

Я думаю, что должно быть

LEFT JOIN ".TABLE_PREFIX."users_medals
0 голосов
/ 18 августа 2011

В подзапросе у вас есть две 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
  )
...