我正在開發一個具有以下表格的預約系統(請參閱附圖)。表tblScheduleDates有一些固定的年份,這些年份是在年初輸入的,例如28/02/2012,1/03/2012,4/3/2012等,而tblscheduleTimes有一些固定的日期這些約會的時間。因此,例如,在2012年2月28日,可用時間是10:00,11:00,12:00等。tblBookings是當預約安排在固定日期和固定時間以及預訂狀態取值預訂或取消。我想嘗試編寫存儲過程以從tblscheduledates和tblscheduleTimes中返回剩餘的可用日期和時間。所以我在想,固定的日期和時間必須被檢查,如果它們存在於tblbookings中,並且它們不被存儲過程返回。任何想法或幫助,歡迎返回特定行的存儲過程
0
A
回答
2
ScheduleTime鏈接到ScheduleDates?就你所擁有的模式而言,似乎你將擁有大量重複數據,或者只是明顯錯誤的數據。
看起來您的PK/FK時間映射顯示不正確。鏈接點類型與時間。但是,scheduletimeid在預定中?
如果值是正確的:
SELECT tblScheduleDates.*, tblScheduleDates.*
FROM tblScheduleDates
JOIN tblScheduleTimes
ON tblScheduleTimes.scheduleTimeID =
tblScheduleDates.scheduleTime_ID
WHERE NOT EXISTS
(
SELECT 1
FROM tblBookings
JOIN tblBookingStatus
ON tblBookingStatus.Status = 'Booked'
WHERE tblBookings.ScheduleDate_ID
= tblScheduleDates.scheduleDateID
)
我建議重命名錶,因爲它似乎真的是混合在一起的時間表日期和時間。類似於我下面第二個項目符號的解決方案可以解決這個錯誤。
如果圖中的鏈接是正確的:
也許我失去了一些東西,但這裏是我所看到的:
預訂表只綁在scheduleddate。但是,這個計劃日期有一個與時間有關的類型。這是否讓你可以有一個整天的時間表?否則,2012年2月28日的每個預訂都需要創建一個新的入口到SchedulDates。那麼,你可以在同一天有5行,只是因爲它們有不同的時間?如果真的是不同的時代,我不認爲需要將日期分成5次存儲。
爲什麼不能將預訂連接到預定的時間和日程安排?這也會讓你的查詢更容易。
或者,你可以有一個映射表,它將scheduledateANDtime連接在一起,然後你只需要在預訂中引用那張表。
或者,您可以將日期和時間一起存儲在一張表中?
也許有一個商業理由,我失蹤,雖然。
相關問題
- 1. 每行返回執行存儲過程?
- 2. 存儲過程返回選定的值
- 3. 存儲過程中未返回的行
- 4. 返回記錄的特定間隔的存儲過程
- 5. MyBatis:Sybase存儲過程返回零行
- 6. 存儲過程返回空
- 7. 存儲過程返回varchar
- 8. 返回存儲過程值
- 9. 存儲過程返回NULLS
- 10. 存儲過程返回varchar
- 11. 存儲過程返回表
- 12. 返回表存儲過程
- 13. 存儲過程返回null
- 14. 存儲過程返回值
- 15. 返回BIGINT存儲過程
- 16. 存儲過程返回空
- 17. 執行返回自定義光標的存儲過程嗎?
- 18. 我的存儲過程的返回值
- 19. 返回存儲過程的SQL性能
- 20. 存儲過程返回錯誤的值?
- 21. 從PHP返回的MySqli存儲過程
- 22. 覆蓋存儲過程的返回值
- 23. 從存儲過程返回的值
- 24. 如何返回值的存儲過程
- 25. 捕獲存儲過程的返回值
- 26. 獲取存儲過程的返回值
- 27. 存儲過程中的返回計數
- 28. 返回json數據的存儲過程
- 29. 有效的存儲過程不返回
- 30. 存儲過程的返回表
無論如何,我認爲你應該在這兩種情況下給出答案。從實際的圖表來看,如果不是你不能回答OP的問題 – 2012-02-28 22:08:11
有時最好不要盲目回答,而是找出問題背後的推理。如果看到問題,那麼需要提出。傳播錯誤的東西似乎並不正確。也許,這將是一個不同方向的推動,讓pikk得到答案,因爲模式變得更容易管理。 – 2012-02-28 22:12:22
我也在看到圖表與實際列表不匹配後更新了答案。它看起來像我建議的那樣設置,但鏈接不正確。 – 2012-02-28 22:23:55