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

QUERY ordenado POR el MAYOR numero DE coincidencias

Estas en el tema de QUERY ordenado POR el MAYOR numero DE coincidencias en el foro de Oracle en Foros del Web. Hola, hace algun tiempo vi una consulta en Mysql, que permitia hacer un select y ordenar los resultados por el mayor numero de coincidencias, ahora ...
  #1 (permalink)  
Antiguo 26/03/2009, 14:05
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Mensaje QUERY ordenado POR el MAYOR numero DE coincidencias

Hola, hace algun tiempo vi una consulta en Mysql, que permitia hacer un select y ordenar los resultados por el mayor numero de coincidencias, ahora necesito hacerlo en oracle, le estado pregutnado a google y todavia no me ha respondido:


el query prodria ser algo mas o menos como;

select *
from tabla
where campo=valor1 or campo=valor3 or campo=valor3 or
field=value1 or field=value2 or field=value3
order by <numero de coincidencias> DESC.


como podemos ver el operador logico es un OR lo que quiere decir que saldran registros que coincidan con por lo menos una de las 6 condiciones. Yo necesito ordenar la consulta del registreo que mas coincidencias tenga al que menos tenga.

Alguien me podria dar una pista, mientras yo le se sigo preguntando a google
  #2 (permalink)  
Antiguo 26/03/2009, 15:40
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: QUERY ordenado POR el MAYOR numero DE coincidencias

Código:
with t as (
select
campo, count(*) cant
from tabla
where campo in (valor1, valor2, valor3, valor4)
group by campo
)
select tabla.campo, s.cant 
from t, tabla
where t.campo = tabla.campo
order by t.cant desc
Sin probarlo, diría que esto funciona :P

Saludos
  #3 (permalink)  
Antiguo 26/03/2009, 16:42
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: QUERY ordenado POR el MAYOR numero DE coincidencias

Por la noche lo ensayo en la casa a ver... mientras en este enlace encuentras como hacerlo en mysql
http://dev.mysql.com/doc/refman/5.1/...-language.html
  #4 (permalink)  
Antiguo 27/03/2009, 00:55
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: QUERY ordenado POR el MAYOR numero DE coincidencias

No me cuadra el enlace con tu pregunta, me parece que algo no entendi.

Saludos
  #5 (permalink)  
Antiguo 27/03/2009, 08:43
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: QUERY ordenado POR el MAYOR numero DE coincidencias

la idea es que yo tengo un campo de texto en una de mis tablas de la base de datos, por ejemplo el contenido de una noticia, este campo debe estar indexado , en mysql como fulltext.

La idea es que el query traiga los registros en cuyo campo existan una o muchas de las palabras que yo le mande como parametro de busqueda y que el resultado del query salga ordenado, del registro que mayor numero de coincidencias tenga contra el patron de busqueda hasta el registro que menos coincidencias tenga.

entonces si en un campo el valor es="esto es un ensayo de noticias " y el mismo campo en otra fila vale="aqui podras ver las noticias del mundo y de colombia" y en una tercera fila este campo vale="colombia es lindo", y yo lo mando a que busque todos los registros que en dicho campo tengan ="noticias de colombia y el mundo", primero saldria el segundo registro y de segundo el primero, y de tercero saldria el el tercero por solo coincidir el campo en una sola palabra.

esto en mysql se hace con MATCH(campo) AGAINST("listado de valores").
  #6 (permalink)  
Antiguo 27/03/2009, 09:29
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: QUERY ordenado POR el MAYOR numero DE coincidencias

Bueno, ahora está un poco diferente la pregunta :)

Te dejo un link http://www.codeproject.com/KB/vbscri..._fulltext.aspx

Saludos
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:17.