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

count con subconsulta

Estas en el tema de count con subconsulta en el foro de Mysql en Foros del Web. Hola gente. Tengo dos tablas una de productos y otra de categorias. Lo que quiero es traerme los datos de las categorias y la cantidad ...
  #1 (permalink)  
Antiguo 16/05/2009, 13:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 111
Antigüedad: 15 años, 10 meses
Puntos: 1
count con subconsulta

Hola gente.

Tengo dos tablas una de productos y otra de categorias.
Lo que quiero es traerme los datos de las categorias y la cantidad de productos de cada una de las categorias. Supongo que se hace con una subconsulta pero no puedo darle en el clavo. :S:S

Gracias
  #2 (permalink)  
Antiguo 16/05/2009, 14:54
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, 4 meses
Puntos: 2658
Respuesta: count con subconsulta

No se necesita una subconsulta sino un JOIN donde relaciones el DI de categoría de una tabla ocn el ID de categoría de la otra.
Algo así como:
Código SQL:
Ver original
  1. SELECT *
  2. FROM PRODUCTOS INNER JOIN CATEGORIA USIGNG (IDCATEGORIA);

Esto si el nombre de campo es el mismo en ambas tablas. Sino:
Código SQL:
Ver original
  1. SELECT *
  2. FROM PRODUCTOS P INNER JOIN CATEGORIA C ON P.IDCATEG = C.IDCAT;

No pongas, repito, no pongas el "P.IDCATEG = C.IDCAT;" en al WHERE, no es eficiente al ejecutar porque el parser de l abase de datos no lo puede optimizar.
__________________
¿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 16/05/2009, 17:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 111
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: count con subconsulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No se necesita una subconsulta sino un JOIN donde relaciones el DI de categoría de una tabla ocn el ID de categoría de la otra.
Algo así como:
Código SQL:
Ver original
  1. SELECT *
  2. FROM PRODUCTOS INNER JOIN CATEGORIA USIGNG (IDCATEGORIA);

Esto si el nombre de campo es el mismo en ambas tablas. Sino:
Código SQL:
Ver original
  1. SELECT *
  2. FROM PRODUCTOS P INNER JOIN CATEGORIA C ON P.IDCATEG = C.IDCAT;

No pongas, repito, no pongas el "P.IDCATEG = C.IDCAT;" en al WHERE, no es eficiente al ejecutar porque el parser de l abase de datos no lo puede optimizar.

Gracias por tomarte la molestia de responder, pero creo q no me explique bien. Lo que necesito es tener la cantidad total de productos dentro de cada categoria
Por ejemple en una categoria tengo 5 productos. BUeno que la consulta me traiga ese numero 5
  #4 (permalink)  
Antiguo 16/05/2009, 18:18
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, 4 meses
Puntos: 2658
Respuesta: count con subconsulta

Eso es un fácil, lo que tienes que hacer es poner sobre la base de esa consulta, todas las operaciones con el agrupamiento que corresponde (prácticas de manual):
Código sql:
Ver original
  1. SELECT idcategoria, nomcate, COUNT(*)
  2. FROM PRODUCTOS INNER JOIN CATEGORIA USIGNG (IDCATEGORIA)
  3. GROUP BY idcategoria;

Si lo que quieres es la cantidad de uno de ellos, obviamente el tema se resuelve en el WHERE:
Código SQL:
Ver original
  1. SELECT COUNT(*)
  2. FROM PRODUCTOS INNER JOIN CATEGORIA USIGNG (IDCATEGORIA)
  3. WHERE idcategoria = 5
  4. GROUP BY idcategoria;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 04:26.