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

Resultados no ordenados por la clave primaria

Estas en el tema de Resultados no ordenados por la clave primaria en el foro de Mysql en Foros del Web. Hola queria consultar lo siguiente: Estoy teniendo un problemilla al sacar Id's de la base de datos, el tema es el siguiente. Debo hacer una ...
  #1 (permalink)  
Antiguo 03/02/2010, 13:19
Avatar de srsombrero  
Fecha de Ingreso: marzo-2008
Mensajes: 128
Antigüedad: 16 años, 1 mes
Puntos: 0
Sonrisa Resultados no ordenados por la clave primaria

Hola queria consultar lo siguiente:

Estoy teniendo un problemilla al sacar Id's de la base de datos, el tema es el siguiente.
Debo hacer una consulta como esta:

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE Id = 123 OR Id = 20000 OR Id = 234 OR Id = 99 OR Id = 674

El resultado de la consulta me da lo siguiente:

1- 99 | Agustin Almada | 33212342
2- 123 | Carlos Algaraz | 23332121
3- 234 | Sebastian Tijote | 23112321
4- 20000 | Ramiro Rampino | 4344323

Supongo que los resultados salen ordenados porque el ID es la clave primaria.
Ahora si bien esta perfecto necesitaria que no ordene solo en este caso los resultados por la clave primaria. Es decir como lo condicione en la consulta o en el orden que los puse en la consulta

2- 123 | Carlos Algaraz | 23332121
4- 20000 | Ramiro Rampino | 4344323
1- 99 | Agustin Almada | 33212342
3- 234 | Sebastian Tijote | 23112321


Muchisimas gracias!
  #2 (permalink)  
Antiguo 03/02/2010, 13:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Resultados no ordenados por la clave primaria

Mirate este post
http://www.forosdelweb.com/f86/ordenar-mysql-737941/

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/02/2010, 13:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Resultados no ordenados por la clave primaria

Podrías hacer algo como:
Código MySQL:
Ver original
  1. SELECT ... FROM ... ORDER BY FIELD(id, 123, 20000, 99, 234);
EDITO: Hola, huesos52.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 03/02/2010, 13:36
Avatar de srsombrero  
Fecha de Ingreso: marzo-2008
Mensajes: 128
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Resultados no ordenados por la clave primaria

Acabo de ver el mensaje anterior! Muchas gracias era esa la manera!
Igual me extraña un poco que sea tan repetitivo porque ademas de agregarlos en ORDER BY FIELD tengo que agregarlos en el WHERE ya que sino me trae todo y primero esos campos
Pero igual buenisima la solucion :)

Saludos y gracias
  #5 (permalink)  
Antiguo 03/02/2010, 13:45
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, 5 meses
Puntos: 2658
Respuesta: Resultados no ordenados por la clave primaria

El problema que le veo a tu pedido es que no hay un ordenamiento aparente según ningún criterio. Esto que pones:
Código MySQL:
Ver original
  1. 2- 123              Carlos Algaraz            23332121
  2. 4- 20000         Ramiro Rampino        4344323
  3. 1- 99                Agustin Almada         33212342
  4. 3- 234              Sebastian Tijote          23112321
no están ordenados ni por clave primaria, ni por nombre ni por número...
O sea, no existe ningún criterio ni campo que permita establecer cuál es el orden usado de aparición...
¿En qué criterio se basa este ordenamiento?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 03/02/2010, 13:47
Avatar de srsombrero  
Fecha de Ingreso: marzo-2008
Mensajes: 128
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Resultados no ordenados por la clave primaria

Justamente de eso hablo, al estar la tabla indexada por Id (Es clave primaria) ordena automaticamente si no hay condicion de ordenamiento por el campo primario y justamente lo que me copiaste no es lo que no quiero! sino lo que quiero!

Saludos y gracias
  #7 (permalink)  
Antiguo 03/02/2010, 14:02
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, 5 meses
Puntos: 2658
Respuesta: Resultados no ordenados por la clave primaria

Creo que no me entendiste o tu respuesta no responde bien mi pregunta:
¿Quieres que no haya ordenamiento o quieres un ordenamiento al azar?

Quiero que partas del conocimiento que el orden de ingreso que los datos tuvieron ya no existe ni es recuperable, a menos que la tabla contenga una columna con la fecha de ingreso, porque una clave primaria no sólo ordena en base a un criterio: una clave primaria ordena físicamente los registros. Esto quiere decir que si suprimieras la PK, la consulta te seguiría dando el mismo resultado.

Ahora bien, si lo que quieres es un orden al azar, debes agregar simplemente un ORDER BY RND().

Si no quieres ni una cosa ni la otra, entonces debes decirnos cuál es el criterio de ordenamiento que usas para que los datos te aparezcan así.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 03/02/2010, 14:21
Avatar de srsombrero  
Fecha de Ingreso: marzo-2008
Mensajes: 128
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Resultados no ordenados por la clave primaria

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Creo que no me entendiste o tu respuesta no responde bien mi pregunta:
¿Quieres que no haya ordenamiento o quieres un ordenamiento al azar?

Quiero que partas del conocimiento que el orden de ingreso que los datos tuvieron ya no existe ni es recuperable, a menos que la tabla contenga una columna con la fecha de ingreso, porque una clave primaria no sólo ordena en base a un criterio: una clave primaria ordena físicamente los registros. Esto quiere decir que si suprimieras la PK, la consulta te seguiría dando el mismo resultado.

Ahora bien, si lo que quieres es un orden al azar, debes agregar simplemente un ORDER BY RND().

Si no quieres ni una cosa ni la otra, entonces debes decirnos cuál es el criterio de ordenamiento que usas para que los datos te aparezcan así.
Claro es un archivo logico un indice

Vos en la tabla tenes 1,2,3,4,776,5,6 entendes?
Ya igual solucione el tema Muchisimas gracias!!

Última edición por srsombrero; 03/02/2010 a las 14:26
  #9 (permalink)  
Antiguo 03/02/2010, 14:27
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, 5 meses
Puntos: 2658
Respuesta: Resultados no ordenados por la clave primaria

Primero: Una PK no es un archivo lógico. Es un índice cluster.

Segundo, me sigue sin quedar claro cuál era el orden que buscabas, porque como dije, parecía no estar ordenado.

Tercero: Si encontraste una solución, sería bueno que la compartas con el foro para poder aprender de tu caso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 04/02/2010, 06:18
Avatar de srsombrero  
Fecha de Ingreso: marzo-2008
Mensajes: 128
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Resultados no ordenados por la clave primaria

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Primero: Una PK no es un archivo lógico. Es un índice cluster.

Segundo, me sigue sin quedar claro cuál era el orden que buscabas, porque como dije, parecía no estar ordenado.

Tercero: Si encontraste una solución, sería bueno que la compartas con el foro para poder aprender de tu caso.
La solucion es la siguiente:

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE Id=123 OR Id=234 OR Id=929 ORDER BY FIELD (Id, 123, 234, 929)

Perdon por no compartirla

Saludos!
  #11 (permalink)  
Antiguo 04/02/2010, 06:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Resultados no ordenados por la clave primaria

Para que te quede un poco mas elegante has uso de la clausula IN

Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE Id IN(123,234,929) ORDER BY FIELD (Id, 123, 234, 929)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: clave, primaria, resultados
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 20:07.