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

No mostrar dos productos de la misma categoria

Estas en el tema de No mostrar dos productos de la misma categoria en el foro de Mysql en Foros del Web. Tengo esta tabla que almacena los productos Lo que quiero es hacer una consulta que me liste productos pero uno de cata categoria, intente algo ...
  #1 (permalink)  
Antiguo 09/04/2011, 09:30
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
No mostrar dos productos de la misma categoria

Tengo esta tabla que almacena los productos



Lo que quiero es hacer una consulta que me liste productos pero uno de cata categoria, intente algo de ponerle WHERE codicate != codicate pero obvio no funciono, espero puedan ayudarme.

Gracias.
__________________
Aprendiendo!!!
  #2 (permalink)  
Antiguo 09/04/2011, 10:05
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: No mostrar dos productos de la misma categoria

En realidad la consulta es sencilla, pero algo ilógica.
Me explico: que te liste uno sólo de cada categoría es sencillo, alcanza con agrupar por categoría.
Código MySQL:
Ver original
  1. SELECT * FROM productos GROUP BY codicate;
El problema es que esta consulta te mostrará el primero que encuentre de cada categoría. Siempre. Todas las veces que lo hagas lo hará de la misma forma.
Lo que no resulta muy lógico es que no planteas ningún criterio en especial para las categorías a mostrar, por lo que la mayoría de los productos (todos aquellos donde haya más de uno por categoría) desaparecerán siempre, es decir que jamás te los mostrará.
¿No sería mejor que pongas alguna forma en que los productos varíen un poco?
Bueno, es tu decisión, pero no lo veo muy práctico. ¿No te parece?
__________________
¿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 09/04/2011, 10:25
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: No mostrar dos productos de la misma categoria

Claro es basico el GROUP BY jaja se me habia olvidado, Gracias.

Respecto a tu sugenrecia pues lo que hago: Tengo un campo en la tabla productos novisto -> Numero de veces visto <- cada que alguien entra a ver ese producto incremento el valor de ese campo y la consulta la hago asi:

Código SQL:
Ver original
  1. SELECT * FROM tb_productos GROUP BY codicate ORDER BY novisto DESC LIMIT 0,15

Me arroja 15 registros agrupados por categorias pero no los ignora que al ordenarlos pues muestra los mas vistos.

Te parece buena solucion?
__________________
Aprendiendo!!!
  #4 (permalink)  
Antiguo 09/04/2011, 11:21
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: No mostrar dos productos de la misma categoria

No, porque el ORDER BY opera luego del GROUP BY, lo que significa que si el primer valor de novisto de una categoría dada fuese cero (o lo que sea que guardes) y el segundo fuese mayor a cero, el GROUP BY sólo te dejará en cero esa categoría, lo que daría una información falsa.
Eso es simplemente porque el ORDER BY ordena lo que ya fue agrupado.
Para hacer lo que dices debes hacerlo desde una subconsulta. Precisamente por eso es que te decía que había que aplicar un criterio en la consulta de las categorías.
Algo así:
Código MySQL:
Ver original
  1.     (SELECT *
  2.     FROM tb_productos
  3.     ORDER BY novisto DESC) T1
  4. GROUP BY codicate LIMIT 0,15
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/04/2011, 12:16
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: No mostrar dos productos de la misma categoria

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No, porque el ORDER BY opera luego del GROUP BY, lo que significa que si el primer valor de novisto de una categoría dada fuese cero (o lo que sea que guardes) y el segundo fuese mayor a cero, el GROUP BY sólo te dejará en cero esa categoría, lo que daría una información falsa.
Eso es simplemente porque el ORDER BY ordena lo que ya fue agrupado.
Para hacer lo que dices debes hacerlo desde una subconsulta. Precisamente por eso es que te decía que había que aplicar un criterio en la consulta de las categorías.
Algo así:
Código MySQL:
Ver original
  1.     (SELECT *
  2.     FROM tb_productos
  3.     ORDER BY novisto DESC) T1
  4. GROUP BY codicate LIMIT 0,15
Gracias. Solucionado...
__________________
Aprendiendo!!!

Etiquetas: productos, categorias
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 08:06.