Ni te va a andar jamás de esa forma...
   El problema es simplísimo visto así: Cada SELECT devuelve una cantidad diferente de campos, algo que 
es total y absolutamente ilegal.
Ambos deben tener la misma cantidad, y para ello en el primer SELECT debes agregar una columna ficticia (totalmente ficticia) que corresponda con la posición y tipo de datos del segundo SELECT:   
La consulta que usas debe estar devolviendo un error, sólo que sin duda no lo estás capturando, por lo que ni ten enteras de eso.
Pero eso es tema de programación, y por consecuencia OFF TOPIC acá.