Déplacez votre JOIN
à côté de la table à laquelle vous vous joignez :
SELECT
i.*,
r.name AS roomname,
c.name AS cat,
p.key AS imgkey,
p.extension AS imgext
FROM
items i
LEFT JOIN photos p
ON p.referencekey = i.key,
rooms r,
categories c
WHERE
i.room = r.key
AND r.key = 663308
AND i.sitekey = 32201
AND c.key = i.categorykey
La longue explication :
A JOIN
fait partie d'une expression qui donne lieu à une table source, utilisée dans la table FROM
en tant que clause de_l'article . Votre FROM
la clause a 3 de_l'article les tables sources :
items
rooms
-
categories
joint à photos
L'erreur se situe dans le ON
condition de réunion de votre categories
joint à photos
de_l'article . Vous faites référence à une table, items
qui n'existe pas dans le de_l'article . La solution consiste à déplacer le photos
se joindre à la items
de_l'article de sorte que vous ayez les éléments suivants de_l'article les tables sources :
-
items
joint à photos
rooms
categories
Malheureusement, je n'ai pas trouvé d'exemple dans la documentation qui explique clairement cette relation entre une table dans la base de données de l'entreprise et une table dans la base de données de l'entreprise. FROM
et une clause JOIN
. Le site SELECT
Synopsis montre cette syntaxe et est la meilleure source dans la documentation pour trouver cette distinction. Notez qu'un JOIN
n'est pas une clause sœur de FROM
mais qui fait en réalité partie d'un de_l'article au sein de la FROM
clause. Ainsi, si votre FROM
consiste en une liste de tables, chaque table de cette liste pouvant avoir ses propres jointures. Il devient alors plus intuitif que chaque table impliquée dans une jointure doit être incluse dans une unique de_l'article .