Fusionar tres tablas en una tabla de resultados

He de fusionar dos tablas en una tabla donde se recogen los resultados de las ventas realizadas

Tabla 1 (EVENTOSCABECERA)

    IdEvento

    DescripcionEvento

    FechaEvento

    DiasEvento

Tabla 2 (EVENTOSPARTICIPANTES)

    IdEvento

    Stand

    PVP

Tabla 3 (EVENTOSGASTOS)

    IdEvento

    Importe

Tabla datos receptora a fusionar: (EVENTOSRESULTADOS)

IdResultados

DescripcionEvento

FechaEvento

DiasEvento

Stand

PVP

Importe

He creado una consulta de Union dando estos parámetros:

select * from EVENTOSCABECERA
UNION SELECT ,IdEvento,DescripcionEvento,FechaEvento,DiasEvento

select * from EVENTOSPARTICIPANTES
UNION SELECT ,IdEvento,Stand,PVP

select * from EVENTOSGASTOS
UNION SELECT ,IdEvento,Importe

FROM EVENTOSRESULTADOS;

Y me esta dando el error: La instrucción Select contiene una palabra reservada, le falta un argumento o esta mal escrito.

No encuentro donde pueda estar el error o si bien he de montarlo de otra forma para conseguir el resultado.

2 respuestas

Respuesta
3

Honestamente, no entiendo en absoluto la instrucción. Le dices que seleccione todos los campos de la primera tabla y que los una a esos mismos campos. Tampoco le dices que campo común tienen, etc.

En todo caso, que ya te digo que no es así, seria:

Select * from eventoscabecera unión select idevento,stnd,pvp from eventosparticipantes Unión select   ....ON eventoscabecera.idevento=eventosparticipantes and eventoscabecera.idevento=eventosgastos.idevento

Si lo que quieres es unir campos para luego anexarlos a EventosResultados tendrías que usar la instrucción Inner Join. Por ejemplo

SELECT EventosCabecera.Descripcionevento, EventosCabecera.FechaEvento, EventosCabecera.DiasEvento, EventosParticipantes.Stand, EventosParticipantes.PVP, EventosGastos.Importe
FROM (EventosCabecera INNER JOIN EventosParticipantes ON EventosCabecera.Idevento = EventosParticipantes.IdEvento) INNER JOIN EventosGastos ON EventosCabecera.Idevento = EventosGastos.IdEvento;

El inconveniente de este tipo de consultas es que si por ejemplo Hay UNregistro eventocabecera, dos registros(con el mismo Idevento) en EventosParticipantes y otros dos en eventosgastos, la consulta te va a sacar 4 registros.

1-1-1

1-1-2

1-2-1

1-2-2

Por eso lo mejor es que si los datos los metes usando un formulario EventosCabecera, la inserción en la tabla Eventos Resultados lo hagas con código de VB, con

docmd.runsql"Insert into....

Y para las otras tablas uses

docmd.runsql"update eventosresultados set stand=.... , pvp=.....

Hola ICUE, muchas gracias por tu amable ayuda.

Lo que necesito es conseguir que me fusione una linea por cada uno de los eventos que contenga los siguientes datos:

DescripcionEvento  

FechaEvento

DiasEvento

Stand

PVP

Importe

y estos datos han de ser extraidos de las tres tablas antes mencionadas.

      EVENTOSCABECERA - EVENTOSPARTICIPANTES - EVENTOSGASTOS

Por cada Evento hay muchos apuntes tanto en contrataciones como de gastos y estos han de quedar fusionados en un solo total por cada evento.

No he entendido muy bien lo de crear un Formulario insertando las tablas.

El Formulario final es que contendra una suma de movimientos por cada uno de los eventos.

Concepto     - F/Evento      -Dias- Stands -   Ventas  -   Gastos

Feria Flores - 12/12/2016 -   2   -    25   - 8.540,00 - 1.875,00

Ferias Muestras     -                  .....             .....          .....         ...

¿Stands es un numero de los que hay? Es que yo creía que en stands ponía "Panadería Pepe", "Artesanía Mari", etc. Si lo que pones en stand es un numero es sencillo.

Con la tabla EventosParticipantes crea una consulta( vamos a llamarla EP), y lleva a l cuadricula de diseño sus campos y dale al botón de agrupar. El campo Idevento déjalo como Agrupar por y los otros dos por Suma. Cierra y guarda.

Con la otra tabla EventosGastos lo mismo.

Luego haz una consulta normal y agrega la tabla EventosCabecera y las consultas EP y EG. Como automáticamente se relacionaran los Idevento( y si no lo hiciera, los relacionas) ya puedes llevar a la cuadricula de diseño los campos Descripcionevento, fecha, días de la primera tabla, stand e importe de l consulta EP y lo demás de la otra consulta. Una vez hecho, en la parte gris haz clic con el botón derecho y en la ventana que se abre selecciona tipo de consulta- Datos anexado. Te preguntará Anexar a quien, eliges la tabla Eventos resultados y en la fila anexar a(si los campos se llaman igual te aparecerán los nombres y si se llamaran de otra forma, debajo de cada campo eliges al que lo quieres anexar. Luego pulsa el botón de ejecutar y... te aparece un letrero""FELIZ FIN DE AÑO Y UN PRÓSPERO 2017" es broma, pero te lo deseo.

Respuesta
2

Vaya por delante que, en un solo paso, me parece que resultará complicado ya que podría dar falsos duplicados.

Una opción sería vincular las tres tablas, agrupando por todos los campos y sumando el importe.

Comprobar que el resultado es el esperado y, de ser así, convertir la consulta en una de acción dónde se insertan los resultados en la nueva tabla.

Otra opción sería crear un script que recorriera las distintas tablas insertando los registros en la de destino.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas