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

ORDER BY (lista arbitraria de ids)

Estas en el tema de ORDER BY (lista arbitraria de ids) en el foro de Mysql en Foros del Web. Paso a explicar lo que quiero: Tengo una consulta de este tipo: Código: SELECT * FROM tabla WHERE id_tabla IN (5, 2, 8, 3); Asi ...
  #1 (permalink)  
Antiguo 03/02/2009, 12:17
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 9 meses
Puntos: 2
ORDER BY (lista arbitraria de ids)

Paso a explicar lo que quiero:

Tengo una consulta de este tipo:

Código:
SELECT * FROM tabla WHERE id_tabla IN (5, 2, 8, 3);
Asi me sale:
================
id_tabla nombre
================
2 Mamiferos
3 Gatos
5 Animales
8 Felinos


Pero lo necesito asi:
================
id_tabla nombre
================
5 Animales
2 Mamiferos
8 Felinos
3 Gatos

Supongo que se puede hacer con un GROUP BY, pero no veo por donde.
Tal vez se pueda pasar la lista (5, 2, 8, 3) y que me ordene como estan enlistados solo que no he encontrado la forma.

Existe una solucion, que es partir el SELECT en varios y con UNION juntar las salidas.

Código:
SELECT * FROM tabla WHERE id_tabla = 5
UNION
SELECT * FROM tabla WHERE id_tabla = 2
UNION
SELECT * FROM tabla WHERE id_tabla = 8
UNION
SELECT * FROM tabla WHERE id_tabla = 3
De esta manera me salen los resultados ordenados como quiero, pero no creo que sea muy funcional si tengo una lista de mas de 20 elementos.

Creo que esto es una forma de ordenacion arbitraria.
__________________
La inteligencia viene detras de mi, pero yo corro mas que ella.
  #2 (permalink)  
Antiguo 04/02/2009, 04:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ORDER BY (lista arbitraria de ids)

Si necesitas un orden jerárquico, Animales, mamíferos, felinos, gatos, lo mejor sería marcar de algún modo la jerarquía. Sin hacerte mucho lío con propuestas de estructuras jerárquicas, quizás te bastaría añadir un campo de orden en la tabla relacionada donde tienes los id, nombre
a ver, imaginemos que ya tienes esa tabla con estos datos
id_tabla|nombre|nivel
5|animales|1
2|mamíferos|2
8|felinos|3
3|gatos|4


SELECT * FROM tabla WHERE id_tabla IN (5, 2, 8, 3) order by nivel

Hay otras formas, pero el ordenador no sabe cuál es la jerarquía si tú no se lo indicas. Aquí el problema es establecer bien los niveles en una clasificación de tipo científico. Eso es lo que realmente tendrás que estudiar.

No sé exactamente si estás utilizando una o varias tablas y tendrías que aclararnos algo más la estructura de los datos, pero la idea es esta.
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 10:06.