unir una tablas tabla relacionadas misma inner hacer diferentes consultas consultar consulta como sql mysql union

una - unir dos consultas sql misma tabla



una forma sencilla de sumar un resultado de UNION en MySql (4)

Tengo una unión de tres tablas (t1, t2, t3). Cada ejecución se vuelve a ejecutar exactamente el mismo número de registros, la primera columna es id, la segunda cantidad:

1 10 2 20 3 20 1 30 2 30 3 10 1 20 2 40 3 50

¿Hay una manera simple en sql de resumirlo para solo obtener:

1 60 2 80 3 80


No estoy seguro si MySQL usa una expresión de tabla común pero haría esto en postgres:

WITH total AS( SELECT id,amount AS amount FROM table_1 UNION ALL SELECT id,amount AS amount FROM table_2 UNION ALL SELECT id,amount AS amount FROM table_3 ) SELECT id, sum(amount) FROM total

Creo que eso debería hacer el truco también.


Subconsulta:

SELECT id, SUM(amount) FROM ( SELECT * FROM t1 UNION ALL SELECT * FROM t2 UNION ALL SELECT * FROM t3 ) GROUP BY id


SELECT id, SUM(amount) FROM ( SELECT id, SUM(amount) AS `amount` FROM t1 GROUP BY id UNION ALL SELECT id, SUM(amount) AS `amount` FROM t2 GROUP BY id ) `x` GROUP BY `id`

Agrupé cada mesa y me uní porque creo que podría ser más rápido, pero deberías probar ambas soluciones.


select id, sum(amount) from ( select id,amount from table_1 union all select id,amount from table_2 union all select id,amount from table_3 ) x group by id