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

Problema con UNION

Estas en el tema de Problema con UNION en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/02/2010, 12:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
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!
  #2 (permalink)  
Antiguo 24/02/2010, 16:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con UNION

¿Has probado así?

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

Etiquetas: union
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 00:15.