尝试 - 返回所有报告日期=当前周的注册。
SELECT * FROM registrations LEFT JOIN reports on registrations.registration=reports.registration WHERE reports.reportDate between cast(timestampadd(SQL_TSI_DAY, -(dayofweek(curdate())-2), curdate()) as date) and cast(timestampadd(SQL_TSI_DAY, 7-(dayofweek(curdate())-1), curdate()) as date)
我想实现以下功能,但我不知道如何使用PHP来实现。
首先,从Registrations表中获取所有“registration”,
然后检查Reports 表中是否存在注册,其中reportDate 等于当前WEEK
(即当前周为周一至周日,今天的时间和日期等于 8 月 26 日至 9 月 1 日)。
最后,在选择输入中显示所有注册(必须回显,因为选择输入位于 html 文件的更下方),并且报告日期 = 本周的注册,使它们可见但禁用。
报名
id | 注册 |
---|---|
1 | 示例 |
2 | 示例2 |
3 | 示例3 |
报告
id | 注册 | 报告日期 |
---|---|---|
1 | 示例 | 2024-08-19 |
2 | 示例 | 2024-08-22 |
3 | 示例2 | 2024-08-22 |
4 | 示例3 | 2024-08-22 |
5 | 示例 | 2024-08-27 |
6 | 示例3 | 2024-08-27 |
在上面的示例中,“EXAMPLE”和“EXAMPLE3”注册应该可见但被禁用,并且“EXAMPLE2”应该根据发布时间和该问题的当前周在选择字段中单击。结果应该像下面的代码
<select oncopy="return false" id="inspectReg" name="inspectReg" class="reg-control">
*Somewhat...a for each loop? or while?*
<option value="EXAMPLE" disabled>EXAMPLE</option> (record exists dated 27th - so disabled)
<option value="EXAMPLE2">EXAMPLE2</option> (record for current week does not exist)
<option value="EXAMPLE3" disabled>EXAMPLE3</option> (record exists dated 27th - so disabled)
</select>
你可以试试这个吗
SELECT r.registration, CASE WHEN rp.registration IS NOT NULL THEN 'disabled' ELSE '' END AS status FROM registrations r LEFT JOIN reports rp ON r.registration = rp.registration AND rp.reportDate BETWEEN CAST(TIMESTAMPADD(DAY, -(DAYOFWEEK(CURDATE())-2), CURDATE()) AS DATE) AND CAST(TIMESTAMPADD(DAY, 7-(DAYOFWEEK(CURDATE())-1), CURDATE()) AS DATE);