2013-05-31 23 views
0

說記住,我有一個SQLite表是這樣的:選擇哪個衝突進入到一個視圖

Name  |Date of Appointment |Time of Appointment 
------------------------------------------------ 
Jane Doe |May 1st, 2013  |09:00 
Jane Doe |May 1st, 2013  |15:00 
John Doe |May 2nd, 2013  |08:00 
John Doe |May 3rd, 2013  |12:00 

在這個例子中,李四對當日兩項任命,但李四有兩個不同的約會在不同的日子。

現在,讓我們說我想創建一個表格視圖,顯示特定日期的所有約會。

CREATE VIEW IF NOT EXISTS [May 1st Appointments] AS SELECT * FROM AppointmentsTable WHERE [Date of Appointment] = 'May 1st, 2013'; 

這將創建一個看起來像下面這樣的觀點:我可以使用下面的語法創建5月1日視圖

Name  |Date of Appointment |Time of Appointment 
------------------------------------------------ 
Jane Doe |May 1st, 2013  |09:00 
Jane Doe |May 1st, 2013  |15:00 

然而,看到了李四多個約會可以看看混亂,所以我只想在視圖中顯示最近的內容。我看到我可以使用ON CONFLICT子句,但似乎我總是必須保留第一個條目並忽略第二個條目,用第二個條目替換第一個條目,或者停止SQLite查詢。

有沒有一種方法可以根據某些條件(如最新)選擇哪些衝突條目保留在視圖中?

回答

1

如果我'糾正你想要的是如果存在一個以上的預約特定日期

然後親切地嘗試下面的查詢它應該工作

CREATE VIEW IF NOT EXISTS [May 1st Appointments] AS SELECT * FROM AppointmentsTable a where [Date of Appointment] = 'May 1st, 2013' and [Time of Appointment]=(select [Time of Appointment] from AppointmentsTable where Name= a.Name and [Date of Appointment] = 'May 1st, 2013' order by [Time of Appointment] desc limit 1) 
+0

特定日期的最新任命這個解決方案明確解決了這個問題。我沒有考慮創建一個有序的子查詢並將結果限制爲一個。 – Thunderforge