2016-05-11 3 views
1

Я только начинаю использовать базы данных sql У меня вопрос о запросе, который возвращает результаты из нескольких таблиц. Извините, если это действительно тривиально, я пытался сам его исследовать, но не знал подходящую терминологию для поиска.Запрос, соединяющий несколько таблиц

У меня есть три таблицы:

Patient - 
PatientID* 
Surname 
FName 
DoB 
Address 
PhoneNo 

Doctor - 
DoctorID* 
Surname 
FName 
DoB 
Address 
PhoneNo 

Appointment - 
AppointmentID* 
DoctorID 
PatientID 
Time 
Date 

хочет запрос, чтобы вернуть все назначения, но заменить DoctorID и PatientID с соответствующими врачами фамилии, и пациенты фамилии. Таким образом, возвращение AppointmentID, врачей Фамилия, пациенты Фамилия, время и дата.

Надеюсь, я объяснил это достаточно хорошо, чтобы кто-то понял!

Заранее благодарим за любую помощь!

ответ

1

Должно быть внутреннее соединение

select a.AppointmentID, b.Surname, b.FNAME, c.Surname, c.FName 
from Appointment as a 
Inner join Doctor as b on b.DoctorID = a.DoctorID 
Inner join Patient as c on c.PatientID = a,PatientID 
0
SELECT 
    a.AppointmentID, 
    a.Time, 
    a.Date, 
    d.Surname, 
    p.Surname 
FROM 
    Appointment a with (nolock) 
    left join 
    Doctor d with (nolock) on 
    d.DoctorID = a.DoctorID 
    left join 
    Patient p with (nolock) on 
    p.PatientID = a.PatientID 
+0

Почему бы использовать левый присоединиться здесь? Вы ожидаете, что там будут встречи, у которых нет соответствующего врача или пациента? –

+0

Поскольку он не уточнил, это обеспечило бы, если бы были назначены назначения, но не назначался врач. Это может произойти в реальной жизни - мы все это видим в нашей больнице на 400 коек. – scsimon

Смежные вопросы