Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2006, 10:07
charlin
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta Sumar Score(Match Against)de dos consultas

Hola a todos,
Este es el primer tema que creo y quiero aprovechar para dar las gracias a la comunidad de forosdelweb por su ayuda indirecta.

Vayamos al tema:

Mi problema es que me gustaría ordenar una consulta utilizando Scores de otras consultas y no sé como hacerlo.
No sé siquiera si se puede hacer porque no tengo mucha experiencia en php ni Sql y no he encontrado nada parecido.(Tampoco sé dónde me podréis ayudar mejor si aquí o en los foros de PHP.)

Tengo una BD con cuatro tablas: proyectos, entidades, link_proy_entpart(relaciona proyectos con ent. participantes), link_proy_entfin(relaciona proyectos con ent. financiadoras).

Para hacer la búsqueda desde la web con php utilizo un buscador que usa MatchAgainst cuando introduces más de una palabra de búsqueda.
El código que he utilizado para realizar la consulta es algo parecido a:


Código PHP:
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
    //busqueda de frases con más de una palabra y un algoritmo especializado


//Buscamos las entidades participantes y financiadoras que coinciden con la búsqueda
   
  
$query_buscarent "SELECT  link_proy_entpart.id_proy,
MATCH(entidades.ent_nom) AGAINST('$busqueda_buscarproy') AS Score1
FROM link_proy_entpart JOIN entidades ON 
link_proy_entpart.id_entpart=entidades.id WHERE (MATCH
(entidades.ent_nom) AGAINST('$busqueda_buscarproy'))
  UNION
  SELECT  link_proy_entfin.id_proy, MATCH(entidades.ent_nom) AGAINST
('$busqueda_buscarproy') AS Score2 FROM link_proy_entfin JOIN entidades
 ON link_proy_entfin.id_entfin=entidades.id 
WHERE (MATCH(entidades.ent_nom) AGAINST('$busqueda_buscarproy'))
  "
;
         
        
$buscarentmysql_query($query_buscarent$BDGSEE) or die(mysql_error());
$totalRows_buscarent mysql_num_rows($buscarent);


//Si encontramos  entidades que coincidan con la busqueda

if($totalRows_buscarinvent>0){

//Primero buscamos las coincidencias en Proyectos
$query_buscarproy"SELECT proyectos.id, proyectos.titulo, proyectos.fecha, 
(MATCH ( proyectos.titulo) AGAINST (  '$busqueda_buscarproy' )) AS Score
FROM proyectos 
WHERE (MATCH ( proyectos.titulo) AGAINST ('$busqueda_buscarproy' ) "
;

//Ahora añadimos a la consulta las entidades encontradas
while($row_buscarent mysql_fetch_assoc($buscarent)){
$query_buscarproy.=" OR proyectos.id=$row_buscarent[id_proy]";} 

$query_buscarproy.=")";

$query_buscarproy.=" ORDER BY $order";
 
 } 
Lo que pretendo es que la consulta $query_buscarproy se ordene con algo así como 'Score+Score1+Score2 DESC' con Score1 y Score2 pertenecientes a $query_buscarent .

Espero haber explicado bien mi problema y agradezco de antemano cualquier ayuda.