2009-12-03 6 views
0

Compte tenu de la requête:erreur MySQL "La colonne 'id' dans la clause FROM est ambiguë", mais je l'ai préfixé mon "id" avec une table

 
SELECT 
DISTINCT score.* 
FROM score 
LEFT OUTER JOIN tag ON (tag.id_score = score.id) 
INNER JOIN score AS score_1 USING (id) 
WHERE 
(score.song_name LIKE '%[Upload]%' 
    OR score.artist_name LIKE '%[Upload]%' 
    OR score.creator_name LIKE '%[Upload]%' 
    OR tag.name LIKE '%[Upload]%') 
AND (score_1.song_name LIKE '%[Check OK]%' 
    OR score_1.artist_name LIKE '%[Check OK]%' 
    OR score_1.creator_name LIKE '%[Check OK]%' 
    OR tag.name LIKE '%[Check OK]%') 

Je reçois Column 'id' in from clause is ambiguous dans MySQL 5.1.37. Habituellement, les gens corrigent cela en ajoutant une table explicite devant leurs colonnes ambiguës, mais je l'ai déjà fait: (tag.id_score = score.id). Laisser le LEFT OUTER JOIN tag résout le problème, mais n'autorise pas la recherche dans la table des balises.

Est-ce un bug dans MySQL ou j'ai raté quelque chose?

Répondre

2

aura-t-il pas utile si vous changez

INNER JOIN score AS score_1 USING (id) 

à

INNER JOIN score AS score_1 (score_1.id_score = score.id) 
+0

oui, INNER JOIN AS Score score_1 ON (score_1.id = score.id) a supprimé le message d'erreur, mais n'a donné aucun résultat. Je pense que je dois utiliser des sous-requêtes/vues et ne pas joindre trop de choses ensemble. – user113017

0

Dans ce cas, je l'ai sous-requêtes utilisées avec succès comme ceci:

 
SELECT * FROM (SELECT 
    DISTINCT score.* 
FROM score 
LEFT OUTER JOIN tag ON (tag.id_score = score.id) 
WHERE 
    (score.song_name LIKE '%[Upload]%' 
     OR score.artist_name LIKE '%[Upload]%' 
     OR score.creator_name LIKE '%[Upload]%' 
     OR tag.name LIKE '%[Upload]%') 


) AS score_0 INNER JOIN (SELECT 
    DISTINCT score.* 
FROM score 
LEFT OUTER JOIN tag ON (tag.id_score = score.id) 
WHERE 
    (score.song_name LIKE '%[Check OK]%' 
     OR score.artist_name LIKE '%[Check OK]%' 
     OR score.creator_name LIKE '%[Check OK]%' 
     OR tag.name LIKE '%[Check OK]%') 


) AS score_1 USING (id) 
Questions connexes