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

Sentencia SQL de ordenación.

Estas en el tema de Sentencia SQL de ordenación. en el foro de SQL Server en Foros del Web. Buenas tardes, Os comento, tengo una tabla como la siguiente ID TIPO ESTADO 1 CASA EN VENTA 2 PISO EN VENTA 3 APART EN VENTA ...
  #1 (permalink)  
Antiguo 21/10/2011, 06:10
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Sentencia SQL de ordenación.

Buenas tardes,

Os comento, tengo una tabla como la siguiente

ID TIPO ESTADO
1 CASA EN VENTA
2 PISO EN VENTA
3 APART EN VENTA
4 CASA EN VENTA
5 PISO EN VENTA
6 TORRE EN VENTA
7 CASA EN VENTA

La cuestión es que mediante una sentencia SQL a través de ASP quiero lo siguiente:

Que primero se muestren los resultados del id=1, seguidamente los resultados de id=2,id=3,id=4 y a continuación el resto de registros que queden en la tabla y coincidan con la sentencia.

Como puedo ingeniarmelas para hacer esto. Trabajo con ASP.

Un saludo y gracias
  #2 (permalink)  
Antiguo 21/10/2011, 07:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sentencia SQL de ordenación.

la sentencia seria algo asi

select * from tabla where id=1 y despues select * from tabla where id=2 que es lo que mencionas, en asp podrias poner en tu formulario un boton que cuando le des siguiente aumente el id que estas buscando....

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/10/2011, 08:09
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Hola Libras,

Te cuento como está la cosa y me confirmas si lo que tu me dices puede realizarse.

En ASP tengo montado un buscador de inmuebles que va contra mi base de datos, hasta ahora muestro los resultados de la búsqueda de manera correcta según se haya indicado.

Lo que deseo ahora es que a la hora de mostrar los resultados, mostrarlos como decía antes, primero los del ID=2, luego los de ID=1, ID=3 e ID=5 y seguidamente el resto de registros. Quizas con Group by o Having existe alguna manera que desconozco para hacer esto.

No entiendo el método que me explicas, yo lo que buscaba es un método de ordenación en el que yo pueda decir que los resultados se muestren según yo quiero.

Gracias por la ayuda y un saludo.

Última edición por gdasoft; 21/10/2011 a las 08:14
  #4 (permalink)  
Antiguo 21/10/2011, 08:22
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

En el primer mensaje creo que lie un poco al personal, quiero que sepan que id=2 tiene más de un registro al igual que id=1, id=3, etc.

He estado probando un el Método UNION de SQL y consigo mostrar justamente los resultados que quiero pero no soy capaz de mostrarlos en el orden que yo quiero.

SELECT * FROM inmuebles WHERE id=2
UNION
SELECT * FROM inmuebles WHERE id in ('1','3','5')
UNION
SELECT * FROM inmuebles WHERE id not in ('1','2','3','5')

Digamos que lo que pretendo hacer es eso (en 1 sola consulta) y que los primeros resultados que se muestren sean los del id=2 luego los del id=1,3,5 y finalmente el resto de registros.

No hace falta decir que lo expuesto aquí es un ejemplo simple, yo ya tengo montado un WHERE bastante amplio para poder filtrar los resultados según el usuario haya especificado en el buscador, pero NO SE cómo hacer lo que tengo en mente.

Gracias por la ayuda.
  #5 (permalink)  
Antiguo 21/10/2011, 08:37
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Mi proyecto es el siguiente, tengo una página web que es una asociación de inmobiliarias, cada inmobiliaria trabaja en esta página con su usuario y contraseña y pueden subir inmuebles, editarlos o eliminarlos.

Lo que quiero es que si un usuario cualquiera hace una búsqueda de un inmueble a través de mi página, los resultados se tienen que mostrar en el orden especificado anteriormente y claro esta siempre en el caso de que existan.

Si busco una Casa en la provincia de Barcelona y la localidad de Badalona deseo que los primeros resultados que se muestren sean los inmuebles que añadió el usuario ID=2, seguidamente que se muestren los inmuebles que han añadido los usuarios id=1, 3, 5 y seguidamente mostrar el resto de resultados.

Espero haberme explicado con claridad.
  #6 (permalink)  
Antiguo 21/10/2011, 08:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sentencia SQL de ordenación.

La verdad no se entiende bien.......necesitas que primero te muestre un registro y despues otros o que es lo que necesitas??? dices que lo orden por como quieres pero como quieres que lo ordene, pusiste un ejemplo de tus datos ahora pon un ejemplo de como quieres que queden tus datos :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/10/2011, 08:47
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Sentencia SQL de ordenación.

Lo que le entiendo yo es que necesita

Así:

El usuario 1 ingreso casa 1, casa 2 y casa 3
El usuario 2 ingreso casa 10, casa 12 y casa 13
El usuario 3 ingreso casa 4, casa 5 y casa 6
El usuario 4 ingreso casa 7, casa 8 y casa 9
el usuario 5 ingreso casa 11, casa 14 y casa 15

Pero si el usuario 2 es el que consulta se muestren en primera instancia los resultados que el ingreso en este caso quedaría así:

Resultados

casa 10, casa 12 y casa 13
casa 1, casa 2 y casa 3
casa 4, casa 5 y casa 6
casa 11, casa 14 y casa 15
casa 7, casa 8 y casa 9
  #8 (permalink)  
Antiguo 21/10/2011, 08:55
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

jillv No es tan difícil como lo que tú me dices. A ver si me explico con claridad.

No hagáis mucho caso de como he escrito el primer mensaje. Tengo una tabla inmuebles donde están guardados todos los inmuebles que se han ido dando de alta y cada uno de estos inmuebles tiene un propietario.

Pongo datos de prueba

Usuario ID=1 tiene 5 inmuebles en Badalona
Usuario ID=2 tiene 3 inmuebles en Badalona
Usuario ID=3 tiene 1 inmuebles en Badalona
Usuario ID=4 tiene 0 inmuebles en Badalona
Usuario ID=5 tiene 0 inmuebles en Badalona


Cuando yo realice una búsqueda a través de mi página de inmuebles en Badalona por ejemplo quiero que los resultados se muestren de la siguiente manera.


Resultado de prueba

Primero los 3 inmuebles que tiene el ID=2
Luego mostrar los 5 inmuebles del ID=1 + 1 inmueble del ID=3 + 0 inmuebles del id=4
Y finalmente mostrar el resto de resultados que coincidan con la búsqueda

Última edición por gdasoft; 21/10/2011 a las 09:06
  #9 (permalink)  
Antiguo 21/10/2011, 09:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sentencia SQL de ordenación.

De nuevo pon algunos ejemplos de tus datos y de que es lo que quieres que aparezca, asi como dices entiendo que si te dicen usuario=2 entonces los datos del usuario 2 se desplegarian ordenados y despues los del usuario 1,3,4(esto no se como lo deduces) y despues los demas.......si asi fuera porque no creas una tabla temporal con un campo identity digamos orden y ahi insertas el valor de tu consulta algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. orden INT IDENTITY(1,1)
  5. )
  6.  
  7. INSERT INTO #temp (id)
  8. SELECT id FROM tabla WHERE id=2
  9. INSERT INTO #temp (id)
  10. SELECT id FROM tabla WHERE id IN (1,3,4)
  11. INSERT INTO #temp
  12. SELECT id FROM tabla WHERE id NOT IN (1,2,3,4)

Asi te regresaria una tabla con un campo por el cual podrias ordenar en este caso el identity :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 21/10/2011, 09:29
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Según me dices cada vez que realicen una búsqueda en mi web tengo que guardar los resultados encontrados en una tabla temporal?

Actualmente rondo los 9.000 registros, cada vez que alguien utilice el buscador tendré que enviar todos los resultados a una tabla temporal y creo que eso puedo demorar mucho al usuario.

No existe algo más simple como por ejemplo:

Select *
FROM inmuebles
WHERE *aqui todas mis condiciones*
order by id=2,id=1,id=3,id=5;id=el resto

:)

Exactamente lo que quiero es mostrar los inmuebles que se han buscado a través del buscador, pero dando preferencia a los inmuebles de ciertos usuarios para que se carguen PRIMEROS, por eso deseo que al hacer la búsqueda primero se muestren todos los inmuebles del usuario Pedro (que coincidan con la búsqueda), luego que se muestren los de los usuarios Maria, Sergio y Antonio (que coincidan con la búsqueda) y finalmente el resto de inmuebles que han puesto otro usuarios (también que coincidan con la búsqueda).
  #11 (permalink)  
Antiguo 21/10/2011, 09:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sentencia SQL de ordenación.

No puedes ordenar en una consulta por varios campos, a ver piensalo un poco asi como lo dices porque campo se iria??? por el primero por el segundo??? paginar tus resultados no te serviria???

Y porque no creas una funcion que te regrese la tabla ordenada, podrias hacer esto para regresar los valores con la idea que te mencione y no tomaria demasiado tiempo en hacer esto.

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; 21/10/2011 a las 09:56
  #12 (permalink)  
Antiguo 21/10/2011, 10:09
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Libras se que no se puede hacer un order BAY así...

Lo bueno es que ya tengo paginados los resultados, pero ahora al jefe se le ha ocurrido esa idea, darle preferencia a los inmuebles de ciertos usuarios.

Ahora mismo tengo unos cuantos pajaros en la cabeza.

Al principio pensé que sería algo más sencillo...

Me parece que hare 3 sentencias y entre ellas solo cambiara el WHERE id=2, otra con WHERE id in ('1','3','5') y otra más excluyendo los registros anteriores.

Gracias!

Última edición por gdasoft; 21/10/2011 a las 10:27

Etiquetas: asp-clásico, programacion, sentencia-sql, bases-de-datos
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 19:19.