2017-10-18 18 views
-1

J'ai regardé des exemples dans Stackoverflow mais aucun ne m'a donné de résultats, j'ai une requête dans laquelle "select" il y a un alias que je dois ensuite utiliser avec un "GAUCHE OUTER JOIN "pour le comparer avec la colonne d'une autre table mais quand je l'exécute il génère une erreur de colonne inconnue, j'ai lu qu'un second JOIN est requis mais je ne sais pas comment le faire.Mysql - Alias ​​dans Left Outer Join erreur donnant

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(embed, '/', -2), '"', 1) as idvideo, embed, thumbnail, title, 
MATCH(title, tags, category) AGAINST('peruvian food') as score 
FROM peruvian_food 
LEFT OUTER JOIN peruvian_food_del ON (peruvian_food.idvideo = peruvian_food_del.id_video_del) 
WHERE MATCH(title, tags, category) AGAINST('peruvian food' IN BOOLEAN MODE) 
AND peruvian_food_del.id_video_del IS NULL 
LIMIT 30 

Je reçois l'erreur suivante:

#1054 - Unknown column 'idvideo' in 'on clause' 

Répondre

1

L'erreur dit que la table peruvian_food ne contient pas de colonne nommée idvideo.

Si nous essayons de référencer l'expression dans la liste SELECT à laquelle est affecté l'alias idvideo, cette référence n'est pas autorisée dans la clause ON dans le même SELECT. Même si une telle référence était autorisée, nous ne la qualifierions pas avec le nom de la table peruvian_food.; il n'y a pas de colonne nommée idvideo dans cette table.

solution la plus simple est de répéter l'expression utilisée dans la liste SELECT:

ON (SUBSTRING_INDEX(SUBSTRING_INDEX(peruvian_food.embed, '/', -2), '"', 1) = ... 

Si nous avons besoin de référencer les idvideo alias, nous aurions besoin d'utiliser une vue en ligne, de sorte que le nom de colonne provenait d'une table dérivée.

Nous ne faisons que deviner la spécifiction ... ce que nous essayons d'atteindre. (Je ne suis même pas sûr qu'une question ait été posée: elle ressemble plus à un rapport de statut qu'à une question, donc nous devinons simplement la question posée.)

+0

c'est vrai! ty pour votre aide! – Kokox