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

Como se puede capturar el ID de los registros ? (indisctinct color)

Estas en el tema de Como se puede capturar el ID de los registros ? (indisctinct color) en el foro de Mysql en Foros del Web. Hola, hay muchos registros de COLOR REPETIDO necesito capturarlos con DISNTICT, asi que esto va de maravilla: Código PHP: SELECT distinct color FROM zapatos  Pero necesito capturar los ID ...
  #1 (permalink)  
Antiguo 23/01/2008, 16:23
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Como se puede capturar el ID de los registros ? (indisctinct color)

Hola,

hay muchos registros de COLOR REPETIDO necesito capturarlos con DISNTICT, asi que esto va de maravilla:

Código PHP:
SELECT distinct color FROM zapatos 
Pero necesito capturar los ID de esos registros, asi que intento con:

Código PHP:
SELECT FROM zapatos WHERE color IN (SELECT distinct color FROM zapatos); 
Pero no va y he intentado otras muchas combinaciónes.

Alguna ayuda por favor.
  #2 (permalink)  
Antiguo 19/08/2008, 17:44
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Como se puede capturar el ID de los registros ? (indisctinct color)

Alguna ayuda por favor?

Necesito los COLORES y también los ID de esos registros retornados.

Pero no hallo como hacerlo.

Gracias.
  #3 (permalink)  
Antiguo 20/08/2008, 02:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
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
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 21:46.