Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/08/2008, 02:39
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Como se puede capturar el ID de los registros ? (indisctinct color)

Anarko,

creo que este problema debes resolverlo con programación, porque parece que quieres poner los colores y luego los id de los zapatos de cada color, pero que estén todos los id. Algunas aclaraciones y recomendaciones (yo usaría la 3 o mejor la 4).

1) Si haces el select con distinct sólo para los colores, te trae los distintos colores (eso lo hace bien), pero si luego le dices que te traiga todos los datos de los zapatos de cada color incluido en esa lista, te traerá todos los id y también sus colores. Eso no te ha funcionado.

2) Si sólo quieres traerte uno de cada color, puedes hacerlo agrupando por color, group by color order by color, pero eso sólo te traerá un id de cada color, y si no utilizas otro criterio, te traerá el primero que hayas cargado, es decir el id más bajo. Naturalmente, puedes traerte, mediante una consulta más elaborada, el más caro o el más barato, etc. de ese color. Pero creo que tampoco es lo que quieres.

3) Si no fueran muchos los id de zapatos de cada color (comprueba los límites de espacio de GROUP_CONCAT), podrías probar esta sintaxis:
SELECT color, GROUP_CONCAT(CAST (id as char)) as id FROM zapatos GROUP BY color ORDER BY color

4) Lo resuelves mediante programación, es decir, te traes los colores junto con los id, sin usar distinct; ordenas por color; y luego mediante tu programa y usando una variable para almacenar el color y un if discriminador para cuando se produzca el cambio de color, presentas lo que quieras. Esto es en mi opinión lo mejor, pues se trata de una sola consulta, no conlleva problemas de espacio y además puedes traerte otros datos de los zapatos, no sólo el id, como ocurriría con el GROUP_CONCAT, en el que para traerte otros datos tendrías que hacer uno o varios concat dentro del group_concat.

Última edición por jurena; 20/08/2008 a las 02:44