product_id - MySQL "Columna desconocida en la cláusula activa"
unknown column ''< product_id>'' in field list (4)
Dar un alias a las tablas en la cláusula from
y rodearlas con paréntesis lo haría funcionar. Pero mezclar combinaciones sigue siendo una mala práctica.
Esta pregunta ya tiene una respuesta aquí:
- MySQL columna desconocida en ON cláusula 3 respuestas
Tengo la siguiente consulta MySQL:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name,
GROUP_CONCAT(tags.tag ORDER BY tag_linking.pid ASC SEPARATOR ",") update_tags
FROM posts, tag_linking, tags
INNER JOIN `users`
ON posts.author=users.id;
WHERE tag_linking.pid = posts.id
AND tags.id = tag_linking.tid
ORDER BY posts.date DESC
Lo cual, se puede ver, conecta tres tablas, etc. De todos modos, el problema es que da un error:
ERROR CODE:
SQL Error (1054): Unknown column ''posts.author'' in ''on clause''
a pesar de que esta consulta más simple utilizada en otra página funciona:
SELECT posts.id, posts.name, LEFT(posts.content, 400), posts.author, posts.date, users.display_name FROM `posts`
INNER JOIN `users`
ON posts.author=users.id
¿Alguien tiene pensamientos sobre por qué ocurre esto? Gracias por tu ayuda.
Simplemente dice que el autor no existe en la tabla de publicaciones. o un error de ortografía?
es ese punto y coma que tiene ON posts.author=users.id;
porque tu sintaxis de combinación de mezcla
Sin embargo, la precedencia del operador de coma es menor que la de INNER JOIN, CROSS JOIN, LEFT JOIN, y así sucesivamente. Si mezcla comas se une con los otros tipos de unión cuando hay una condición de unión, puede producirse un error del formulario Columna desconocida ''col_name'' en ''on clause'' . La información sobre cómo lidiar con este problema se brinda más adelante en esta sección.
la solucion es:
Para permitir que la unión sea procesada, agrupe las dos primeras tablas explícitamente con paréntesis para que los operandos para la cláusula ON sean (t1, t2) y t3:
SELECCIONAR * FROM (t1, t2) UNIR t3 ON (t1.i1 = t3.i3);
Alternativamente , evite el uso del operador de coma y use JOIN en su lugar:
SELECCIONAR * DESDE t1 UNIRSE t2 UNIRSE t3 ENCENDIDO (t1.i1 = t3.i3);