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

Ordenar consulta

Estas en el tema de Ordenar consulta en el foro de SQL Server en Foros del Web. Buenas! Me surge un problemilla que nose como solucionar, tiene pinta de ser un chorrada pero no se me ocurre nada y no encuentro solucion ...
  #1 (permalink)  
Antiguo 07/08/2013, 13:24
 
Fecha de Ingreso: marzo-2012
Ubicación: ciudad real
Mensajes: 62
Antigüedad: 12 años, 8 meses
Puntos: 3
Ordenar consulta

Buenas! Me surge un problemilla que nose como solucionar, tiene pinta de ser un chorrada pero no se me ocurre nada y no encuentro solucion por google.

Resulta que tengo una tabla de usuarios
ejemplo:

iduser--------provincia

1-------------ciudad real
2-------------albacete
3 ------------ciudad real
4 ------------valladolid
5 ------------barcelona

Bueno pues me gustaria seleccionar todos los usuarios, pero que aparezcan primero los de ciudad real ordenados y luego el resto (el resto me da igual que esten ordenados).

Si uso ORDER BY provincia ASC/DESC siempre sale primero o albacete o valladolid y no se me ocurre como hacer que salgan primero los de ciudad real y luego el resto :S.

Saludos y disculpar las molestias!
  #2 (permalink)  
Antiguo 07/08/2013, 13:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Ordenar consulta

pero cual es la logica que sean primero los de ciudad real? solo porque asi lo quieres? si es asi entonces con esto obtienes lo que necesitas:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. nombre VARCHAR(50)
  5. )
  6. INSERT INTO #temp VALUES (1,'ciudad real')
  7. INSERT INTO #temp VALUES (2,'albacete')
  8. INSERT INTO #temp VALUES (3,'ciudad real')
  9. INSERT INTO #temp VALUES (4,'valladolid')
  10. INSERT INTO #temp VALUES (5,'barcelona')
  11. INSERT INTO #temp VALUES (6,'ciudad real')
  12.  
  13.  
  14. SELECT * FROM #temp WHERE nombre='ciudad real'
  15. UNION ALL
  16. SELECT * FROM #temp WHERE nombre NOT IN ('ciudad real')

saludos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 07/08/2013 a las 13:48
  #3 (permalink)  
Antiguo 07/08/2013, 14:54
 
Fecha de Ingreso: marzo-2012
Ubicación: ciudad real
Mensajes: 62
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Ordenar consulta

Muchisimas gracias! creo que me va perfecto mira que no ocurrirseme...

Debido a la naturaleza del contenido necesito que se muestren users de determinada poblacion ademas de "otros".
Claro, tengo la opcion de obtenerlos automaticamente con la consulta ordenados u obtenerlos todos sin distincion y con php ordenarlos y mostrarlos.

Pense que si tuviera mil usuarios seria mas optimo obtenerlos ordenados que hacerlo con php, no?

Saludos y de nuevo muchas gracias!
  #4 (permalink)  
Antiguo 07/08/2013, 15:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Ordenar consulta

Que bien que te funciono :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/08/2013, 23:18
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 4 meses
Puntos: 40
Respuesta: Ordenar consulta

Yo lo haría así (el ejemplo de Libras):
Código SQL:
Ver original
  1. SELECT *
  2. FROM #temp
  3. ORDER BY CASE WHEN Nombre='ciudad real' THEN 0 ELSE 1 END;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: sql
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 14:04.