Mysql – Unir los resultados de dos consultas SELECT
En muchas ocasiones nos puede interesar unir el resultado de dos consultas. Ya sabemos que para unirlos, los resultados de las consultas deben tener el mismo número de campos y ser cada uno de ellos del mismo tipo (integer, float, string…). Pero cómo las unimos? Vamos con Mysql – Unir los resultados de dos consultas SELECT.
Aquí os dejo un ejemplo que creo que os puede mostrar de forma mas clara cómo hacerlo:
SELECT nombre, goles FROM ( SELECT jugadora.nombre as nombre, jugadora.goles as goles FROM jugadora WHERE jugadora.temporada="2016-2017" UNION ALL SELECT jugador.nombre as nombre, jugador.goles as goles FROM jugador WHERE jugador.temporada="2016-2017" ) jugadores
Fijaos que son dos tablas diferentes, jugador y jugadora, y que al hacer la consulta, renombramos los campos a nombre y goles en cada una de las consultas para que sean iguales. De esta manera, cuando hacemos la unión tienen el mismo número de campos y el mismo nombre.
Si lo queremos complicar un poco mas, le añadimos el GROUP BY
Tenemos las jugadoras por un lado, y las estrellas por otro. Algunas jugadoras, son catalogadas estrellas y juegan en ligas europeas. Para sumar todos los goles que ha realizado una jugadora, tanto en su liga como en la liga europea, podemos realizar la siguiente consulta (atentos a los GROUP BY):
SELECT id, nombre, goles, sum(goles) FROM ( SELECT jugadora.id as id, jugadora.nombre as nombre, goleadoras.goles as goles FROM jugadora, goleadoras WHERE jugadora.id=goleadoras.jugadora_ID AND goleadoras.numgoles > 0 GROUP BY id UNION ALL SELECT estrellas.id as id, estrellas.nombre as nombre, estrellas_goleadores.goles as goles FROM estrellas, estrellas_goleadores WHERE estrellas.id=estrellas_goleadores.estrellas_ID AND estrellas_goleadores.numgoles > 0 GROUP BY id ) jugadores GROUP BY id
Espero que os facilite un poco las consultas el artículo Mysql – Unir los resultados de dos consultas SELECT
Más información
os pregunto y si tengo dos (AS) con diferente nombre ejemplo tu tienes los dos AS con el nombre goles en mi caso es AS cantidadtotal y AS subtotal, cuando ejecuto la consulta todos los resultados se ejecutan en AS cantidadtotal, algun modo de que no me pase esto y los resultados se muestre en las columnas que estoy creando??
Si son con diferentes nombres, crea nuevas columnas. Personalmente desconozco si existe un modo de unir mediante MYSQL. Yo creo que ya debería tratarse desde PHP o lenguaje que utilices. Una vez tengas los dos resultados en dos tablas, unirlas mediante PHP.
Directamente de MYSQL, si tienen diferente nombre los campos (AS), no creo que pueda unirse.
ya pude resolver mi problema en verdad no tenia que unir nada, soy nuevo en el mundo de programacion y no sabia que se podia sumar y multiplicar en un mismo select, de igual gracias por tu respuesta rapida lo tendre en cuenta para mas preguntas.!
te dejo la soluciòn del problema
SELECT nomprocompra, cantidadcompra, valorunicompra, SUM( cantidadcompra ) AS cantidadtotal, SUM( cantidadcompra * valorunicompra ) AS total
FROM compras
WHERE nomprocompra LIKE ‘%pilsen%’
Hola! Nunca había tenido la necesidad de unir dos consultas… hasta hoy. Muy clara la explicación. Llegué al resultado deseado en seguida.
Saludos desde Argentina
Un placer ver que los ejemplos que ponemos os son de utilidad.