62 votes

MySQL colonne inconnue dans la clause ON

J'ai la requête MySQL suivante:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',
    astext(pg.Geometry) AS Geometry
FROM property p, propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
    AND p.PropertyGeometryID = pg.id
GROUP BY p.id

Et je reçois cette erreur:

#1054 - Colonne 'p.id' inconnue dans la clause 'on'

Autant que je puisse voir, la requête semble correcte, avez-vous une idée de ce qui pourrait ne pas aller?

0 votes

Je suis certain que vous avez vérifié, mais vous avez bien une colonne id sur la table property qui est aliasée comme p ?

-2voto

dotNET Points 5290

Si cela aide quelqu'un (et une note pour moi-même à l'avenir), j'ai eu cette erreur en essayant d'exécuter les requêtes suivantes dans MariaDB :

SELECT a.name, b.name
FROM `cities` as a
INNER JOIN `countries` as b 
ON `a.country_id` = `b`.`id`;

alors que j'aurais dû l'écrire comme suit :

SELECT a.name, b.name
FROM `cities` as a
INNER JOIN `countries` as b 
ON `a`.`country_id` = `b`.`id`;

Je laisse au lecteur le soin de repérer la différence comme exercice. :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X