¿Cómo ordenar esta consulta sql con union?

publicado por: Anonymous

Necesito ordenar una consulta por un campo que tengo en la tabla llamado orden, pero por mucho que lo he intentado no se ordenan, siempre se ordenan por id. Si realizo una consulta si el UNION se ordenan perfectamente por orden.

¿Qué puede estar sucediendo? A ver si me podéis echar una mano.

$sql= "


(SELECT rop, idF, year FROM cot WHERE rop!='1' AND year='1998' ORDER BY orden ASC  LIMIT 1 )

 UNION

( SELECT rop, idF, year FROM cot WHERE rop!='1' AND ( year = '0' || year = ".$year.") ORDER BY orden ASC )


";

Al hacerlo de esta forma, me da un error (solución de @Fernando Forcén):

  $sql= "

    SELECT * FROM (  


    (SELECT rop, idF, year FROM cot WHERE rop!='1' AND year='1998' ORDER BY orden ASC  LIMIT 1 )

     UNION

    ( SELECT rop, idF, year FROM cot WHERE rop!='1' AND ( year = '0' || year = ".$year.") ORDER BY orden ASC )

    ) Datos ORDER BY orden

    ";

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in”

solución

Deberías hacer una consulta por encima para ordenarlos:

SELECT *
FROM (    
(SELECT rop, idF, year, orden FROM cot WHERE rop!='1' AND year='1998' ORDER BY orden ASC  LIMIT 1 )

     UNION

    ( SELECT rop, idF, year, orden FROM cot WHERE rop!='1' AND ( year = '0' || year = ".$year.") ORDER BY orden ASC )
) Datos
ORDER BY orden
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *