SQL - Multi consultas (SQL SERVER)

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Multi consultas (SQL SERVER)

Publicado por Jonathan (2 intervenciones) el 11/09/2018 22:29:31
Buenas a todos, a ver si alguien puede ayudarme, parece facil pero me esta dando un buen dolor de cabeza alv.
Estoy haciendo una consulta a una base de datos alojada en SQL Server la cual utilizo para llenar un reporte, el caso es que estoy obteniendo los datos de tablas relacionadas, el problema es que cuando en una tabla no existen registros relacionados la consulta me la devuelve vacía, en mi caso tengo problemas con la tabla EstudiosCCaptIMG que vendrían siendo las imágenes de las interpretaciones de los estudios capturados. Por ejemplo cuando se interpreta un estudio de un paciente pero esta interpretación no se le agrega imagen entonces la consulta me la devuelve vacía y el reporte estaría sin ningún dato, pero en el caso de que si se agregue una imagen o mas todo va bien.

Esta es la consulta que utilizo:

SELECT I.idInterpretacion,I.DescripDetalladaEst,I.Resultado,I.idDiagnostico,I.idEstCapt,(I.MotivoIngreso) AS DescripcionMacroscopicaINTERPRETACION,
D.Diagnostico,D.DescripcionMacroscopica,
(M.Nombre) AS MedicoSolicitante, (M.Cedula) AS CedulaMedicoSolicitante,
(ME.Nombre)AS MedicoInterpretacion,(ME.Cedula) AS CedulaMedicoInterpretacion,
EC.idEstudio, EC.idOrdenEstudios,
E.Descripcion, E.Costo,
OE.FechaOrden,
(P.Apellidop+' '+P.ApellidoM+' '+P.Nombres) AS NombrePaciente, P.Genero, P.Edad, P.FechaNac, P.Expediente, P.Meses,
isNull(IMG.Descripcion, 'Sin img') AS DescripcionImg,isNull(IMG.Imagen, 'Sin img') AS Imagen
FROM InterpretacionResultados I
INNER JOIN Diagnosticos D ON I.idDiagnostico = D.idDiagnostico
INNER JOIN EstudiosCapturados EC ON I.idEstCapt = EC.idEstCapt
INNER JOIN OrdenEstudios OE ON EC.idOrdenEstudios = OE.idOrdenEstudios
INNER JOIN Medicos M ON OE.idMedico = M.idMedico
INNER JOIN Estudios E ON EC.idEstudio = E.idEstudio
INNER JOIN Pacientes P ON OE.idPaciente = P.idPaciente
INNER JOIN Medicos ME ON I.idMedico = ME.idMedico
INNER JOIN EstudiosCCaptIMG IMG ON I.idEstCapt = IMG.idEstCapt <-- si quitara esta relación todo estaría perfecto, el problema es que necesito mostrar las imagenes en el reporte
WHERE EC.idEstCapt=52
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Multi consultas (SQL SERVER)

Publicado por Leonardo Josué (1173 intervenciones) el 11/09/2018 22:59:14
Hola Jonathan:

En SQL, el INNER JOIN es MANDATORIO, esto quiere decir que para que un registro se muestre DEBE DE EXISTIR INFORMACIÓN EN AMBAS TABLAS... prueba con un LEFT o RIGTH JOIN... si no sabes como funcionan estos, pregúntale a SANTA WIKIPEDIA:

https://es.wikipedia.org/wiki/Join

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Multi consultas (SQL SERVER)

Publicado por Jonathan (2 intervenciones) el 11/09/2018 23:06:17
JAJA no lo había pensado hermano, solo le puse un LEFT JOIN a esa tabla y ya.

La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.

¡GRACIAS!

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar