SQL - Listar Registros Acuerdo a otra Tabla

   
Vista:

Listar Registros Acuerdo a otra Tabla

Publicado por Ikarus (2 intervenciones) el 27/04/2010 21:15:16
Buenas tardes, ante todo les agradesco la ayuda que me puedan dar.

Tengo una BD de Atenciones Médicas donde hay dos tablas una de atenciones medicas (ATE) y otra de registros de diagnosticos por atencion (ATEDIA) donde hay varios registros por atencion segun la cantidad de diagnosticos, ejemplo:

ATE:
Nro Atencion Paciente
1000 Jose
2000 Maria
3000 Karla
4000 July

ATEDIA:
Nro Atencion Nro Diagnostico CodDiagnostico
1000 1 Z400
1000 2 A230
2000 1 Z400
3000 1 B100
4000 1 O210
4000 2 Z400

Necesito generar una consulta que me arroje solo las atenciones donde figure el diagnostico Z400 pero ninguno otro mas en la misma atencion, es decir, deberia ser el diagnostico unico de esa atencion, en el ejemplo deberia arrojarme solo la atencion 2000.
Lamentablemente la BD la tengo en Access y he intentado hacer diversas consultas, como hace una subconsulta donde me arroje solo atenciones con diagnostico Nro 1 el Z400 y de alli otra consulta mas donde arroje de ese grupo solo las que tienen 1 diagnostico pero no se como, has pense en ver si podria hacerlo con JOIN, EXIST, HAVING pero me pierdo dado que no tengo tanta experiencia en SQL, he probado un par de consultas pero como son 500000 atenciones pues se me cuelga la pc y pienso que es porque talvez no he afinado muy bien la consulta, gracias por cualquier concejo que me puedan dar.
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

RE:Listar Registros Acuerdo a otra Tabla

Publicado por Leonardo Josue (878 intervenciones) el 28/04/2010 17:05:54
Buenos días Ikarus:

Mira, no estoy seguro de que sea la consulta más eficiente, pero lamentablemente no tengo mucho tiempo para analizar más tu problema. Creo que puedes obtener el resultado que necesitas con lo siguiente:

SELECT * FROM ATE INNER JOIN ATEDIA ON ATEDIA.NO_ATENCION = ATE.NO_ATENCION
WHERE ATE.NO_ATENCION IN
(
SELECT NO_ATENCION FROM
(
SELECT NO_ATENCION, COUNT(*) AS TOTAL FROM ATEDIA
GROUP BY NO_ATENCION
HAVING COUNT(*) = 1
)
)
AND ATEDIA.COD_DIAGNOSTICO = 'Z400'

Por lo que comentas del rendimiento es posible que también se cuelgue con este query, pero cuestión que lo intentes, si encuentro alguna otra manera más eficiente de hacerlo pues lo comento en el foro.

Saludos y espero tus comentarios.
Leo
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