Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Como hacer ésta consulta en SQL?

Estas en el tema de ¿Como hacer ésta consulta en SQL? en el foro de Bases de Datos General en Foros del Web. Hola chicos! Quiero hacer una consulta sql para ver ciertas 'incongruencias' en una bd de SQLServer. Para simplificarlo un poco, pongamos que tengo una tabla ...
  #1 (permalink)  
Antiguo 25/10/2018, 06:55
 
Fecha de Ingreso: julio-2015
Ubicación: Gran Canaria
Mensajes: 4
Antigüedad: 8 años, 9 meses
Puntos: 0
¿Como hacer ésta consulta en SQL?

Hola chicos!

Quiero hacer una consulta sql para ver ciertas 'incongruencias' en una bd de SQLServer.

Para simplificarlo un poco, pongamos que tengo una tabla "Movimiento_Paciente" que contiene un campo pacienteId y otro fechaInicio. En ésta tabla pueden haber varios movimientos de un paciente, es decir, pueden haber varios registros con fechaInicio diferentes para un mismo pacienteId

Luego tengo otra tabla Tratamiento, que contiene los campos nombre_tratamiento, pacienteId y fechaTratamiento. Al igual que la tabla anterior, puede haber varios tratamientos con fechas diferentes para un mismo paciente

Lo que quiero buscar son los pacientes cuya fechaTratamiento mínima sea inferior a la fechaInicio mínima de la tabla Movimiento_Paciente.

Lo que intenté fué algo así

Código SQL:
Ver original
  1. SELECT t1.pacienteId FROM Movimiento_Paciente t1
  2. INNER JOIN Tratamiento t2 ON t1.pacienteId = t2.pacienteId
  3. WHERE (SELECT MIN(fechaTratamiento) FROM Tratamiento GROUP BY pacienteId) < (SELECT MIN(fechaInicio) FROM Movimiento_Paciente GROUP BY pacienteId)

Esa consulta me da error porque obviamente esos select devuelven mas de un valor.

Estoy un poco trabado y no se como hacerla. ¿Me podrían ayudar?

Muchas gracias, un saludo!!
  #2 (permalink)  
Antiguo 25/10/2018, 08:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ¿Como hacer ésta consulta en SQL?

Código SQL:
Ver original
  1. SELECT t1.pacienteId FROM Movimiento_Paciente t1
  2. INNER JOIN Tratamiento t2 ON t1.pacienteId = t2.pacienteId
  3. INNER JOIN (SELECT MIN(fechaTratamiento) AS f_min, pacienteid FROM Tratamiento GROUP BY pacienteId) AS t3 ON (t3.pacienteid=t1.pacienteid)
  4. INNER JOIN (SELECT MIN(fechaInicio) f_min,pacienteid FROM Movimiento_Paciente GROUP BY pacienteId) AS t4 ON (t1.pacienteid=t4.pacienteid)
  5. WHERE t3.f_min<t4.f_min

Seria algo como eso :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/10/2018, 09:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ¿Como hacer ésta consulta en SQL?

Código SQL:
Ver original
  1. SELECT t1.pacienteId FROM Movimiento_Paciente t1
  2. INNER JOIN Tratamiento t2 ON t1.pacienteId = t2.pacienteId
  3. INNER JOIN (SELECT MIN(fechaTratamiento) AS f_min, pacienteid FROM Tratamiento GROUP BY pacienteId) AS t3 ON (t3.pacienteid=t1.pacienteid)
  4. INNER JOIN (SELECT MIN(fechaInicio) f_min,pacienteid FROM Movimiento_Paciente GROUP BY pacienteId) AS t4 ON (t1.pacienteid=t4.pacienteid)
  5. WHERE t3.f_min<t4.f_min

Seria algo como eso :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:00.