Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 23-ene-2008, 15:23   #1 (permalink)
Anarko está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.121
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.
__________________
Salu2!,
Microsoft utiliza PHP, yo no lo sabia tu?
Anarko está desconectado   Responder Citando
Antiguo 19-ago-2008, 17:44   #2 (permalink)
Anarko está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.121
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.
__________________
Salu2!,
Microsoft utiliza PHP, yo no lo sabia tu?
Anarko está desconectado   Responder Citando
Antiguo 20-ago-2008, 02:39   #3 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 813
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-ago-2008 a las 02:44.
jurena esta en línea ahora   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 13:05.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93