Consulta de unión de tablas con diferentes campos |
Responder |
Autor | |
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
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) 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 |
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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. |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |