No entiendo muy bien lo que me comentas.
Yo había pensado en crear otro camppo virtual llamado
titulodesc (si encuentra en el titulo = 0, si encuentra en la descripcion = 1) y luego hacer la ordenación así:
ORDER BY titulodesc ASC,ordk2k ASC, ordlongitud DESC
¿Esto es posible?
Edito: Al final me ha quedado una consulta asi:
SELECT TITULO,ARCHIVO, IF(INSTR(TITULO,'k2k')>0,0,1) ordk2k, LENGTH(TEXTO) ordlongitud FROM referencias WHERE CATEGORIA='partners' AND MATCH(TITULO,TEXTO) AGAINST ('$buscar') ORDER BY ordk2k ASC, ordlongitud DESC
Pero es lo que te comento, no tengo manera de separar y poner primero los de coincidencia en el TITULO y luego los de coincidencia en el TEXTO.
Edito2: Al final lo he conseguido, poniendo un 'A' AS control en el primer select y luego 'B' AS control en el segundo y hacer un order by alfinal de todo.
Pero me encuentro que cuando me encuentra en los dos selects, me duplica el resultado, porque uno devuelve A y el otro B y entonces ya no son iguales. Me quedo asi la consulta: Código PHP:
(SELECT TITULO,ARCHIVO,'A' AS titulotexto, IF(INSTR(TITULO,'k2k')>0,0,1) AS ordk2k, LENGTH(TEXTO) AS ordlongitud FROM referencias WHERE CATEGORIA='partners' AND MATCH(TITULO) AGAINST ('AIDO'))
UNION DISTINCT
(SELECT TITULO,ARCHIVO,'B' AS titulotexto, IF(INSTR(TITULO,'k2k')>0,0,1) AS ordk2k, LENGTH(TEXTO) AS ordlongitud FROM referencias WHERE CATEGORIA='partners' AND MATCH(TEXTO) AGAINST ('AIDO'))
ORDER BY ordk2k ASC, ordlongitud DESC
La desesperación ya es máxima.
Un saludo!