Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2010, 12:01
urameshix
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 19 años, 1 mes
Puntos: 1
Problema con UNION

Hola chic@s!

Llevo horas con un problema que no acabo de resolver, creo que mi coco está con todas las neuronas quemadas ya. La idea es que tengo que hacer una consulta para una busqueda de una web. En la que me dicen que los resultados que coincidan con el CAMPO TITULO, tienen que ir primero, y justo a continuación los resultados que coincidan con el CAMPO TEXTO. En cada uno de los SELECT unidos por el UNION DISTINCT tengo 2 criterios mas de ordenación, que he sacado para simplificar este post.

Como podeis ver, necesito hacer una ordenación con ORDER BY en cada SELECT, como según he leido no es posible, hice esta chapucilla, de asignar 'A' o 'B' a el campo virtual titulotexto según encuentre en un campo o en otro. La chapuza funciona, pero el problema está en cuando hay coincidencia en los dos campos, que me devuelve los resultados duplicados. Es lógico, me devuelve uno con A y otro con B, como ya no son idénticos los registros UNION DISTINCT los interpreta como diferentes.

Os dejo el código a ver si me podeis dar alguna solución:

(SELECT TITULO,ARCHIVO,'A' AS titulotexto FROM referencias WHERE CATEGORIA='partners' AND MATCH(TITULO) AGAINST ('$busqueda'))
UNION DISTINCT
(SELECT TITULO,ARCHIVO,'B' AS titulotexto FROM referencias WHERE CATEGORIA='partners' AND MATCH(TEXTO) AGAINST ('$busqueda'))
ORDER BY titulotexto ASC

Un saludo a tod@s!