Como puedo unificar diferentes tablas

Me gustaría saber si podría solucionar mi consulta.

Tengo tres tablas de diferentes productos  (A_B_C)

En la Tabla A tengo las siguientes columnas

Clientes - Mes - Año - Neto(Euros)

Los mismos campos en las Tablas B y C, los clientes son los mismos para todas las tablas, ningún campo es clave. Lo que me interesa es poder juntar estas tres tablas en una sola consulta, como planteo en el ejemplo:

Tabla A cliente 123 mes ENE año 2017 €100

Tabla B cliente 123 mes ENE año 2017 €100

Tabla C cliente 123 mes ENE año 2017 €100

Lo que quiero es esto:

Consulta

Cliente 123 mes ENE año 2017 €300

1

1 Respuesta

817.675 pts. No responderé preguntas de usuarios que no valoren las...

Haz una consulta de unión con las tres tablas (SELECT * FROM Tabla A UNION ALL SELECT * FROM Tabla B...) y luego una consulta de totales sobre ésta, agrupando por todos los campos menos el importe, que lo sumas.

Que código debería usar si solo quiero seleccionar algunos campos comunes en todas las talabas ejemplo:

Cliente - Mes - Año - Neto

Gracias.

En vez de "SELECT *..." pon "SELECT campo1, campo2,...", donde campo1, campo2... serán los campos que quieres mostrar. En todas las consultas que intervengan tienes que ponerles los mismos campos y en el mismo orden.

Pero deberé poner primero

SELECT * FROM Tabla A UNION SELECT campo1, campo2,... y así todas las tablas. Esto es así?

No, nada de SELECT *, pon el SELECT campo1, campo2...en todas las tablas

He puesto el siguiente código:

SELECT * FROM 005551CUniCitroen UNION ALL SELECT * FROM 005552CUniToyota UNION ALL SELECT *

Las tablas son 005551CUnioCitroen y 005552CuniToyota, pero cuando ejecuto este código me da un error. 

Los datos proporcionados en la consulta debe contener al menos una tabla o consulta.

No se donde esta el error.

UNa consulta de unión tiene esta estructura:

SELECT Campo1, Campo2...FROM Tabla1

UNION

SELECT Campo1, Campo2...FROM Tabla2

UNION

...

Adáptala a los nombres de campos y tablas que tengas

En tu caso concreto sería algo así:

SELECT Cliente ,Mes,Año ,Neto FROM TablaA

UNION

SELECT Cliente ,Mes,Año ,Neto FROM TablaB

UNION

SELECT Cliente ,Mes,Año ,Neto FROM TablaC

Si con UNION no te devuelve todos los registros, usa UNION ALL

¡Gracias! 

Ya me ha funcionado, y después he puesto una consulta con los campos totales y en neto suma. Es así?

Sí, todos en "Agrupar por" menos Neto que va en "Suma"

¡Gracias! 

Perdona, pero tengo una duda, he puesto este código:

SELECT * FROM 005551CUniCitroen

UNION

SELECT * FROM 005552CUniToyota

UNION SELECT *

FROM 005553CUniTecnicamer;

Estos son los campos que tienen las consultas:  Clientes - Mes - Año - Neto(Euros) y son iguales en todas ellas, hasta aquí bien pero el problema surge que en la columna Neto(euros) cuando encuentra una cantidad igual no la suma sino que solo pone una como si la agrupase y tendría que sumarla. Como puedo solucionar este problema? Todo lo demás bien.

Gracias.

Como te decía en un respuesta anterior, si no te devuelve todos los registros cambia UNION por UNION ALL

¡Gracias! 

He estado leyendo alguna cosa sobre el ALL y lo he entendido, ahora si me suma los valores repetidos.

Muchas gracias por tu ayuda. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas