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

Ayuda con conuslta algo compleja para mi

Estas en el tema de Ayuda con conuslta algo compleja para mi en el foro de Mysql en Foros del Web. Hola como va? Bueno estoy con un problemática acá con una consulta. El tema es así tengo una consulta donde intento buscar los datos de ...
  #1 (permalink)  
Antiguo 06/10/2009, 13:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Ayuda con conuslta algo compleja para mi

Hola como va?
Bueno estoy con un problemática acá con una consulta. El tema es así
tengo una consulta donde intento buscar los datos de un turno de un consultorio odontologico, utilizo varios left join porque puede que el turno haya sido registrado con o sin obra social, y puede que tenga o no tenga los tratamientos que se harán... el problema surge porque para saber si tiene los tratamientos el turno tengo que consultar con la tabla det_turnos donde guarda el código de cada tratamiento de cada turno y en caso de que haya registrado algún tratamiento para este turno debo compararlo con la tabla de tratamientos para saber cuales son los tratamientos del turno, pero no puedo hacerlo en where porque ni si quiera se si tengo detalles (como dije antes puede o no tener detalles el turno), es decir que no se si tengo los tratamientos que se van a hacer en la tabla de detalles.
Esta seria la consulta aunque le saque varios datos porque queria mostrar solo ese problema. El resultado de la consulta obviamente es nada porque no lo puedo hacer con where como lo tengo aca
Código:
select tratamientos.codtratamiento, tratamientos.importe,
 tratamientos.descripcion as tratamiento, turnos.horafini,
turnos.observacion, pacientes.codpaciente, turnos.fecha
from tratamientos, pacientes,
turnos 
left join det_turnos on det_turnos.codturno = turnos.codturno
left join obrasocial on turnos.codobra = obrasocial.codobra
where turnos.fecha = '20091006' and
turnos.horaini = '12:30' and turnos.codpaciente = pacientes.codpaciente and pacientes.nombre = 'GERMAN DAGATTI'  and tratamientos.codtratamiento = det_turnos.codtratamiento
Muchas gracias y ya que estamos, como pongo la etiqueta de codigo SQL en el foro??
gracias
  #2 (permalink)  
Antiguo 07/10/2009, 01:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con conuslta algo compleja para mi

Es dificil entender lo que quieres.... lo mejor seria que puesieras un ejemplo mostrando los datos que tiene cada tabla....

Pero en cualquier caso debes relacionar todas las tablas con join....

Código sql:
Ver original
  1. SELECT
  2.     tratamientos.codtratamiento,
  3.     tratamientos.importe,
  4.     tratamientos.descripcion AS tratamiento,
  5.     turnos.horafini,
  6.     turnos.observacion,
  7.     pacientes.codpaciente,
  8.     turnos.fecha
  9. FROM
  10.    (((turnos
  11.       LEFT JOIN det_turnos
  12.                 ON turnos.codturno = det_turnos.codturno)
  13.       LEFT JOIN obrasocial
  14.                 ON turnos.codobra = obrasocial.codobra)
  15.       LEFT JOIN tratamientos
  16.                 ON det_turnos.codtratamiento = tratamientos.codtratamiento)
  17.       LEFT JOIN pacientes
  18.                 ON turnos.codpaciente = pacientes.codpaciente
  19. WHERE turnos.fecha = '20091006'
  20.     AND turnos.horaini = '12:30'
  21.     AND pacientes.nombre = 'GERMAN DAGATTI';

algo así....

Quim

Nota: [_HIGHLIGHT="sql"] El codigo [_/HIGHLIGHT] el icono verde con # (quita los underscore rojos...)
  #3 (permalink)  
Antiguo 07/10/2009, 12:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Ayuda con conuslta algo compleja para mi

La verdad es que se que no me entendiste bien pero tu respuesta es lo que necesitaba muchas gracias, pero hay algo que no entiendo de esta consulta:
porque la tabla turnos y los 3 primeros lef join estan con parentesis y el left join de pacientes no???
Gracias
  #4 (permalink)  
Antiguo 08/10/2009, 01:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con conuslta algo compleja para mi

Fijate que los parentesis se cierran despues de las clausulas "on..." de manera que cada left join se hace con el par de tambals anterior....

No se si són estrictamente necesarios pero a mi me ayudan a ordenar el codigo....

Quim
  #5 (permalink)  
Antiguo 08/10/2009, 10:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Ayuda con conuslta algo compleja para mi

Si si acabo de ver que es lo mismo sin los paréntesis
Muchas gracias
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 15:03.