2011-08-18 2 views
0

J'ai regardé les réponses des autres ayant le même problème, mais je ne peux pas comprendre comment réparer le "Not unique table/alias".MySQL Pas unique table/alias

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 est ce que mon script utilise pour définir le préfixe de table de base de données.

+0

double possible de [MySQL et PHP - Pas tableau unique,/alias] (http://stackoverflow.com/questions/2077355/mysql-php-not-unique-table -alias) – Phil

+0

Où cherchez-vous exactement la table non-unique/alias? – escproxy

Répondre

1

Dans votre sous-requête

LEFT JOIN ".TABLE_PREFIX." Médailles

Je pense que cela devrait être

LEFT JOIN ".TABLE_PREFIX."users_medals 
+0

Yupp, ça a marché! Merci :) – Spencer

0

Dans la sous-requête vous avez deux tables sans medals alias Je pense que le FROM ".TABLE_PREFIX."medals devrait être 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 
)