2011-10-22 55 views
2
CREATE TABLE Department(
    DNumber integer NOT NULL PRIMARY KEY); 

CREATE TABLE Patient(
    PID integer NOT NULL PRIMARY KEY, 
    P_DNumber integer NOT NULL REFERENCES Department (DNumber) 
); 

CREATE TABLE Appointment(
    AppNumber integer NOT NULL PRIMARY KEY, 
    AppDate date NOT NULL, 
    App_DNumber integer NOT NULL REFERENCES Department (DNumber) 
); 

CREATE TABLE Attend(
    A_PID integer NOT NULL REFERENCES Patient (PID), 
    A_AppNumber integer NOT NULL REFERENCES Appointment(AppNumber) 
); 

你好,我有這些表,我想爲每個PID找到他參加約會的最後一個日期。我嘗試加入但沒有任何工作。我正在使用Postgres。有沒有人有關於它的想法?如何獲取SQL中的每個元素的最大值

非常感謝您

回答

4

讓這個嘗試,通過AttendAppointment加盟。

SELECT 
    Patient.PID, 
    MAX(Appointment.AppDate) AS lastAttended 
FROM 
    Patient 
    LEFT JOIN Attend ON Patient.PID = Attend.A_PID 
    JOIN Appointment ON Appointment.AppNumber = Attend.A_AppNumber 
GROUP BY Patient.PID 

關於參加每月2+預約患者需要COUNT()一個HAVING子句中。

SELECT 
    Patient.PID, 
    COUNT(Attend.A_AppNumber) AS numAppts 
FROM 
    Patient 
    LEFT JOIN Attend ON Patient.PID = Attend.A_PID 
GROUP BY Patient.PID 
HAVING COUNT(Attend.A_AppNumber) >= 2 
+0

@ Y.Shoham是的,謝謝你的追捕。 –

+0

是的,它與LEFT JOIN完美結合。非常感謝你。 如果我可以再問一個問題,我想查找一個月內至少參加兩次約會的PID。 – Cheryl

+0

@Cheryl請參見上面的內容,儘管Stack Overflow規則在技術上應該作爲一個單獨的問題提出。順便說一句,歡迎來到SO。 –

相關問題