Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Select con left join y count

Estas en el tema de Select con left join y count en el foro de Mysql en Foros del Web. Hola, tengo un inconveniente con la sintaxis de esta consulta. Tengo una tabla USUARIOS (id, name) y otra tabla PRODUCTOS (id, id_usuario) la consulta debe ...
  #1 (permalink)  
Antiguo 26/03/2011, 15:07
 
Fecha de Ingreso: julio-2010
Mensajes: 52
Antigüedad: 13 años, 9 meses
Puntos: 3
Select con left join y count

Hola, tengo un inconveniente con la sintaxis de esta consulta.

Tengo una tabla USUARIOS (id, name) y otra tabla PRODUCTOS (id, id_usuario)

la consulta debe devolver los usuarios ordenados por cantidad de productos que tienen en forma descendente...


USUARIO 23 --> 20 productos
USUARIO 13 --> 15 productos
USUARIO 17 --> 12 productos

Tengo así
Código MySQL:
Ver original
  1. SELECT * FROM #__usuarios AS u, COUNT(p.id) AS cantidad
  2. LEFT JOIN #__productos AS p ON (u.id = p.id_usuario)
  3. ORDER BY cantidad DESC

El error de sintaxis me lo marca cerca de COUNT(p.id)
Version MySql 5.1.36

Gracias
  #2 (permalink)  
Antiguo 26/03/2011, 15:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select con left join y count

No puedes usar el símbolo "#" en MySQL. Es un caracter de comentario, por lo que omite todo lo que siga a su aparición. Cumple la misma función que "/*" o "-- " (dos guiones y un espacio).
Lo que has puesto es lo mismo que escribir
Código MySQL:
Ver original 

De hecho, antes de usar un caracter no alfanumérico, lo que te conviene es siempre leer el manual de referencia para saber si es posible, o el mismo tiene otro uso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/03/2011, 15:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select con left join y count

Tener en cuenta siempre: 9.2. Nombres de bases de datos, tablas, índices, columnas y alias
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 26/03/2011, 15:18
 
Fecha de Ingreso: julio-2010
Mensajes: 52
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Select con left join y count

Gracias gnzsoloyo, sin tener en cuenta el caracter # identificas algún otro error de sintaxis?
  #5 (permalink)  
Antiguo 26/03/2011, 15:26
 
Fecha de Ingreso: julio-2010
Mensajes: 52
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Select con left join y count

porque en realidad despues con php se reemplaza el #_ con el prefijo de la tabla, disculpa por no tener en cuenta semejante detalle

Código PHP:
Ver original
  1. echo str_replace('#_','prefijo',$this->_query);
  #6 (permalink)  
Antiguo 26/03/2011, 15:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select con left join y count

Sí, no me fijé más allá del error evidente, pero COUNT jamás puede usarse en el FORM. Eso no tiene sentido.
COUNT sólo puede usarse en el SELECT o con un HAVING, si se usa, pero nunca en el FROM. FROM sólo puede contener tablas, reales o derivadas (de una subconsulta).

Código MySQL:
Ver original
  1. SELECT u.*, COUNT(p.id) AS cantidad
  2. FROM usuarios AS u LEFT JOIN productos AS p ON (u.id = p.id_usuario)
  3. ORDER BY cantidad DESC

Por otro lado, el uso de una cadena para ser reemplazada me parece una complicación innecesaria en el PHP, ya que el mismo resultado tendrías usando una variable común y corriente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/03/2011 a las 15:57
  #7 (permalink)  
Antiguo 27/03/2011, 07:03
 
Fecha de Ingreso: julio-2010
Mensajes: 52
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Select con left join y count

Muchas Gracias Gnzsoloyo! Salió andando como necesitaba. Que tengas un muy buen día.

Etiquetas: count, join, left, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.