** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta de unión de tablas con diferentes campos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta de unión de tablas con diferentes campos

 Responder Responder
Autor
Mensaje
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Tema: Consulta de unión de tablas con diferentes campos
    Enviado: 09/Junio/2021 a las 21:21
Hola! Existe la posibilidad de hacer una consulta de unión con tablas que tengan diferentes campos?
Drop here!
Estoy tratando de hacer un cuadro de lista que muestre los diferentes laboratorios que se realiza un paciente. Los laboratorios se guardan en varios tablas, según que tipo de laboratorio es, es decir tengo 5 tablas:
Hemograma
Química
Hepatograma
Coagulograma
Estado Ácido Base
Otros laboratorios.

Cada una de estas tablas, aparte de los campos con los datos del laboratorio, tiene un campo IdPaciente y fecha.

Mi idea es mostrar en un cuadro de lista la fecha y el laboratorio que tiene registrado ese paciente y al hacer doble click, sobre el valor del cuadro de lista se abra otro formulario con los datos de ese laboratorio específico.

Se me ocurrió que podía hacerlo con una consulta de unión, el problema es que por lo que estuve leyendo no se puede realizar con tablas que tengan diferente cantidad de campos.

A alguien se le ocurre alguna manera de hacerlo?

Muchas gracias por la ayuda de siempre
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 10/Junio/2021 a las 00:23
(vaya por dios, no puedo poner una sentencia SQL!. Me da error 403. Dónde dice S E L E C T deberás quitar los espacios)

Hola,

Efectivamente no puede hacer una consulta de union de varias tablas si estas tienen distinto número de campos y utilizas *. Pero si puedes acotar el numero de campos a mostrar:

S E L E C T UnCampo AS Campo1, OtroCampo AS Campo2 FROM Tabla1
UNION ALL
S E L E C T EseCampo AS Campo1, AquelCampo AS Campo2 FROM Tabla2
UNION ALL
S E L E C T CampoX AS Campo1, CampoY AS Campo2 FROM Tabla3


Te recomiendo añadir un campo con el nombre de la tabla para poder saber a que formulario debes navegar al hacer doble-clic

Un saludo


Editado por xavi - 10/Junio/2021 a las 00:25
Xavi, un minyó de Terrassa

Mi web
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 10/Junio/2021 a las 02:05
Hola Xavi! Muchas gracias por contestar.
En base a tu sugerencia, armé la consulta de unión resumiendo los campos.
La sentencia sql quedó así:
-------------------------------
S ELECT Hemograma.IdPaciente, "Hemograma" AS Laboratorio, Hemograma.Fecha FROM Pacientes INNER JOIN Hemograma ON Pacientes.IdPaciente = Hemograma.IdPaciente WHERE (((Hemograma.IdPaciente)=[Formularios]![Internado]![txtId])); 
Union
S ELECT Pacientes.IdPaciente, "Quimica" AS Laboratorio, Quimica.Fecha FROM Pacientes INNER JOIN Quimica ON Pacientes.IdPaciente = Quimica.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId]));
Union 
S ELECT Pacientes.IdPaciente, "Hepatograma" AS Laboratorio, Hepatograma.Fecha FROM Pacientes INNER JOIN Hepatograma ON Pacientes.IdPaciente = Hepatograma.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId]));
Union 
S ELECT Pacientes.IdPaciente, "Prot-Alb-Amilasa-SubB" AS Laboratorio, Centro.Fecha FROM Pacientes INNER JOIN Centro ON Pacientes.IdPaciente = Centro.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId])); 
Union 
S ELECT Pacientes.IdPaciente, "Coagulograma" AS Laboratorio, Coagulograma.Fecha FROM Pacientes INNER JOIN Coagulograma ON Pacientes.IdPaciente = Coagulograma.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId]));
Union 
S ELECT Pacientes.IdPaciente, "Otros" AS Laboratorio, OtrosLaboratorios.Fecha FROM Pacientes INNER JOIN OtrosLaboratorios ON Pacientes.IdPaciente = OtrosLaboratorios.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId]));
Union 
S ELECT Pacientes.IdPaciente, "Gases" AS Laboratorio,AcidoBase.Fecha FROM Pacientes INNER JOIN AcidoBase ON Pacientes.IdPaciente = AcidoBase.IdPaciente WHERE (((Pacientes.IdPaciente)=[Formularios]![Internado]![txtId]))
ORDER BY Fecha DESC;
--------------------------------------
Esa consulta esta como origen del siguiente cuadro de lista:
https://ibb.co/Mfvgjb1

De esa manera cuando le doy doble click a la selección de la lista, me abre un formulario con los datos del laboratorio que seleccione (llevando el campo Id y fecha al nuevo formulario)
Esta resuelto mi problema, muchas gracias por contestar.
Se puede cerrar el hilo!
Saludos

PD: me tira el mismo error al pegar la consulta jaja! Ahí le puse espacios también.

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable