Aquí está mi consultafin MySQL con la unión a trabajar
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only%" OR `joke` LIKE "%only%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%three%" OR `joke` LIKE "%three%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%doors%" OR `joke` LIKE "%doors%") ORDER BY `ups` DESC,`downs` ASC)
LIMIT 0, 30
Por alguna razón, no parece a la orden por altibajos ... que sólo me tira hacia atrás en los resultados el orden en que están naturalmente en la base de datos.
Cuando lo reduzco a una sola consulta, funciona bien, pero aparte de eso, parece ignorarlo.
Asimismo, no quiero pedir por la totalidad de los resultados, o me habría puesto LIMIT 0,30 Order By blah
¿Tiene alguna idea sobre cómo hacer que funcione como a mí me gustaría? Básicamente, quiero combinar las diferentes consultas, y hacer que cada una de ellas se ordene individualmente por altibajos, y luego combinarlas, una tras otra. –
Así que la primera consulta se ordenó, luego la segunda ordenó. Si el primero es mayor que 30, entonces solo mostraría los primeros 30 en la primera consulta. –
Bleh, esa es una pregunta difícil. ¿Estás diciendo que no quieres ordenar todo el conjunto correctamente?¿Simplemente agrega un conjunto ordenado al final de otro y toma los primeros 30? –