PDA

Ver la Versión Completa : Select en varias tablas


sitrico
28-12-2006, 23:13:29
Tengo que generar una consulta que une 3 tablas:

- Horarios
- Citas
- Pacientes

En Horarios se encuentra una lista de "horas" para un día de la semana X: 9:00, 9:30, 10:00...19:30 en fin las horas de inicio de las citas (cada 30Min) y cada una tiene un IDHorario unico
En Citas tengo los campos: IdCita, fecha, IdHorario y ID Paciente
En Pacientes tengo IdPaciente, Nombre

Lo que Quiero Obtener es una consulta (simplificando las cosas) que tenga para una fecha dada:

idHorarios.Hora, IdPaciente.Nombre
9:00 <null>
9:30 Pedro Perez
10:00 <null>
....
19:30 <null>

El problema es que esta sentencia no me incluye los horarios no asignados (<null>)


Select c.fchcita, h.Hora, p.nombre from "Horarios" H, "Citas" C, "Pacientes" P
Where c.idpaciente = p.idpaciente And H.idhorario = c.idhorario
Order By FchCita, Hora


PD uso Firebird 2 con IBExpert

Creo que hay que usar un left join pero no me entiendo mucho con SQL :(
gracias por cualquier ayuda

sitrico
28-12-2006, 23:59:04
Probando logre esto:


select H.*, C.* From "Horarios" H
Left join "Citas" C On H.idhorario = c.IdHorario
Where DiaSem = 1 And IdArea = 1


Me devuelve los datos que nececito (pero falta el nombre del paciente) ahora la pregunta seria: ¿como incorporo la tercera tabla?

sitrico
29-12-2006, 00:09:57
Y al final esto: :)


select H.Hora, p.nombre, p.Apellido
From "Horarios" H Left join "Citas" C On H.idhorario = c.IdHorario
Left Join "Pacientes" P On C.idpaciente = p.idpaciente
Where DiaSem = 1 and IdArea = 1