Foros del Web » Programando para Internet » ASP Clásico »

Sentencia SQL de ordenación.

Estas en el tema de Sentencia SQL de ordenación. en el foro de ASP Clásico 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:11
 
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:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Sentencia SQL de ordenación.

No entiendo. El propósito es mostrar "4 destacados" siempre arriba y luego los resultados de la búsqueda (aunque esos 4 destacados no tengan nada que ver con lo que se buscó)?

Si es así, podrías agregar un campo destacado=0/1 a la tabla y la sentencia quedaría:

select bla, bla from tabla where destacado = 1 or [resto de criterios acá] order bay destacado desc
__________________
...___...
  #3 (permalink)  
Antiguo 21/10/2011, 08:14
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Hola AlZuwaga,

Te cuento como funciona:

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.

Para que me entiendas si busco una Casa en la provincia de Barcelona y en la localidad de Badalona quiero que primero se muestren los pisos que ha introducido el ID=2 (en el caso de que existan), luego mostrar los del ID=1, ID=3 e ID=5 (en el caso de que existan también), y finalmente mostrar el resto de resultados que coincidan con la busqueda.

Quizas con Group by o Having existe alguna manera que desconozco para hacer esto.

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.
  #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:36
 
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:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Sentencia SQL de ordenación.

Mmm... a ver si voy entendiendo...
No sé como lo tenés ahora, pero eso datos que mostrás en el primer mensaje yo los tendría como una tabla aparte. Y con una tabla extra relaciono los inmuebles con los "tipos de operación". Esta última tabla que denominé "tipos de operación" tendría un campo llamado prioridad (u orden, como quieras) que te serviría para tal propósito.

Cómo lo ves?


Por cierto:
Cita:
... order bay ...
__________________
...___...
  #7 (permalink)  
Antiguo 21/10/2011, 08:52
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Hola AlZuwaga,

Lo del order bay esta chulo jejeje.

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

Lo que quiero es que al utilizar el buscador de inmuebles los resultados que se tienen que mostrar quiero ordenarlos como he comentado. Que primero se muestren los inmuebles (si existen) del usuario id=2, luego los de los usuarios id=1,3,4 y luego el resto.

Pongo un ejemplo a ver si se entiende mejor:

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

Nuevo intento de aclaración.

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).
  #9 (permalink)  
Antiguo 21/10/2011, 10:21
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Sentencia SQL de ordenación.

Nuevamente, es un tema de prioridades. Y como la prioridad la tienen los usuarios y no los inmuebles, ese campo de prioridad debe estar en la tabla de usuarios:

tabla: usuarios
id_usuario
prioridad
[otros_campos]

tabla: inmuebles
id_inmueble
id_usuario
[otros_campos]

Una vez relaciones las tablas y metas los filtros, ordenás ascendente por el campo prioridad de la tabla usuarios (menor número mayor prioridad).
__________________
...___...
  #10 (permalink)  
Antiguo 21/10/2011, 10:30
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Sentencia SQL de ordenación.

Tienes razón con lo que dices, en el caso de que esto fuera algo estatico, pero va a ser dinamico.

Son varias página web conectadas a una misma base de datos, dependiendo de la página en la que estes los primeros resultados en cargarse seran unos u otros.

Un lio de tres pares de narices.

Tu idea es correcta por eso pero tendre que pensar otra cosa.

Gracias!

Etiquetas: 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 06:56.