MySQL - Consulta UNION

 
Vista:

Consulta UNION

Publicado por Jose (1 intervención) el 24/02/2010 18:59:36
Hola chic@s!

Es la primera vez que escribo en este foro, 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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta UNION

Publicado por SQL (6 intervenciones) el 24/02/2010 21:33:58
Esto es el patrón que necesitas:

select distinct campo
from (

SELECT 'A' orden ,'DATO Z' campo
union
SELECT 'B' ,'DATO A'
union
SELECT 'C', 'DATO Z'
order by 1

) a

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar