2015-04-28 2 views
2

При попытке найти основные сведения о докторе (имя, адрес телефона и т. Д.), Где они самые молодые, работающие в клинике, но также не ушли в отставку.SQL MAX (dob) не возвращается во внутреннем соединении с условиями

Я прошел через форумы, и лучшее, что я нашел, это использовать внутреннее соединение, но теперь оно не возвращает никакой информации вообще.

select doctorid, surname, given, address, suburb, postcode, phone 
from doctor 
inner join (
     select max(dob) 
     from doctor 
     where resigned is null); 

этот код не работает, любая помощь будет принята с благодарностью.

+1

Внутренних присоединиться синтаксис кажется неправильным, вы не упомянуть здесь, на какое поле вы приобщая, @andomar исправлены это правильно. –

ответ

1

inner join требует on положения:

from doctor 
inner join (
    select max(dob) as max_dob 
    from doctor 
    where resigned is null) filter 
on filter.max_dob = doctor.dob 
+0

Удивительно, большое вам спасибо! – Shandep

0

Попробуйте это:

select d1.doctorid, d1.surname, d1.given, d1.address, 
    d1.suburb, d1.postcode, d1.phone 
    from doctor d1 join doctor d2 
    on d1.doctorid<> d2.doctorid and d1.dob>=d2.dob 
    group by d1.doctorid 
    having count(*)= (select count(*)-1 from doctor);