0
我嘗試了很多邏輯,但仍然沒有得到準確的結果。 我有2個字段shift_from和shift_to與datetime。數據庫中也存在相同的字段。 現在我必須檢查哪些用途在特定時間段內沒有被分配任何轉換。如何從數據庫中獲取未在特定日期和時間分配的用戶列表
預期結果: 查詢應返回輸入日期和時間內未佔用的用戶列表。使用
表:
- 用戶含用戶日期。
- role_users - 確定用戶的角色。
- 角色 - 確定角色列表。
- 班次 - 確定班次的詳細信息,如時間,日期,地點等。
- 公司 - 僅用於識別公司相關用戶。
注意:我從窗體獲取shift_from datetime,從from獲取shift_to datetime。
我的努力: 我的查詢如下:
SELECT u.id,u.name FROM users as u
left join role_user as ru on u.id=ru.user_id
left join roles as r on ru.role_id=r.id
left join shift_assignment as saa on saa.user_id=u.id
left join shifts as s on s.id=saa.shift_id
left join companies as c on u.company_id= c.id
WHERE r.name='security_officer_agents' and
c.id=$company_id and ((DATE('$shift_from_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_from_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to')) or (DATE('$shift_to_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_to_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to'))
請幫我this.There也避免不之間的方式,因爲它是不考慮的那一天。它是隻在這些日期之間進行。
移位臺結構
'id',
`location_id` ,
`duty_point_id`,
`contact`,
`phone`,
`shift_from`,
`shift_to` ,
`created_by` ,
`created_at`,
`updated_at`,
PRIMARY KEY (`id`),
KEY `shifts_location_id_foreign` (`location_id`)
我必須用這個/替換代碼。請解釋一下關於這個的一些邏輯,並且還在 –
上面檢查一下變化。 –
什麼時間段 –