Cita:
Iniciado por rakshaka
a ver si funciona ese... porque pusiste NAME en rojo?
No lo puse yo. Se resalta solo por el etiquetado del código.
Por lo demás, sólo copié lo que estabas intentando poner, sólo que le puse acentos agudos (`), como manda MySQL obligatoriamente cuando usas palabras reservadas por nombres de objetos en base.
Nota:
Nunca uses como nombres palabras simples de inglés. Terminarás usando palabras reservadas de MySQL, lo que generarán errores sintácticos indetectables.
Consejos:
- No generes la query en la misma llamada a la baje. Usa una variable, de modo que luego puedas verificar con un simple
echo, si la sintaxis es correcta.
- Costruye las consultas de una forma estructurada, de modo de poder verla más facilmente.
- No uses "*" en las consultas, en especial cuando usas JOINs, ya que puedes duplicar las columnas con idéntico nombre de diferentes tablas y eso generar errores. Invoca específicamente las columnas que vas a usar, y nada más que esas.
Código PHP:
Ver original$qry = "SELECT *
FROM (SELECT
C.*,
GROUP_CONCAT(P.nombre) nombres,
GROUP_CONCAT(P.imagen) img,
GROUP_CONCAT(P.producto_id) idProductos
FROM categorias C INNER JOIN productos P ON C.categoria_id = P.categoria_padre
ORDER BY C.categoria_id ASC, P.orden ASC) T1
GROUP BY categoria_id";
echo $qry;
Nota 2: No es necesario poner el AS para los alias. Es obsoleto desde hace años, irrelevante y sólo agrega problemas para leer.