Php DB查询以获取具有最高优先级用户的时间块
对于我的服务,我有一个表,显示谁在这段时间使用它。它包括列Php DB查询以获取具有最高优先级用户的时间块,php,database,loops,Php,Database,Loops,对于我的服务,我有一个表,显示谁在这段时间使用它。它包括列 customer | start_date | end_date | priority 优先级可以是低、中或高 例如,客户丈夫和妻子在一个月内使用具有上述优先级的服务 丈夫和妻子使用如下服务 customer start_date end_date priority ----------------------------------------------- Husband 2019-11-01 2
customer | start_date | end_date | priority
优先级可以是低、中或高
例如,客户丈夫
和妻子
在一个月内使用具有上述优先级的服务
丈夫和妻子使用如下服务
customer start_date end_date priority
-----------------------------------------------
Husband 2019-11-01 2019-11-04 High
Husband 2019-11-05 2019-11-20 Low
Husband 2019-11-21 2019-11-30 Medium
Wife 2019-11-01 2019-11-06 Medium
Wife 2019-11-07 2019-11-25 High
Wife 2019-11-26 2019-11-30 Low
所以在月底,对于每个时间跨度,我必须推导出在这两个日期之间使用最高礼节的人,例如:
customer start_date end_date priority
----------------------------------------------
Husband 2019-11-01 2019-11-04 High (priority value from husband)
Wife 2019-11-05 2019-11-06 Medium (priority value from wife)
Wife 2019-11-07 2019-11-25 High (priority value from wife)
Husband 2019-11-26 2019-11-30 Medium (priority value from husband)
如何使用PHP实现这一点?因此,如果我理解正确,您正试图从数据中提取时间跨度,从何时到何时,服务由谁以何种优先级使用
我建议您更改您的数据结构,使其更容易:
- 创建一个包含列的表(例如名为
usageperday
)
客户|日期|优先级
您应该将priority
写成一个整数,1=低,2=中,3=高
- 使用输入数据填写该表。比如说,
Husband 2019-11-01 2019-11-04 High
Wife 2019-11-01 2019-11-06 Medium
你在表格中写下:
Husband 2019-11-01 3
Husband 2019-11-02 3
...
Husband 2019-11-04 3
Wife 2019-11-01 2
Wife 2019-11-02 2
...
Wife 2019-11-06 2
。。。对于输入中的每一行,依此类推
- 然后,对于每一天,从表中选择优先级最高的客户,因此使用如下SQL
SELECT customer
FROM usageperday
WHERE priority = max(priority)
GROUP BY date;
- 最后,您可以为每个连续时间将该天数列表汇总为一行
块,如所述
我找到了解决办法。下面是逻辑
husbandlevels = getPrioritiesBYPid(husband);
wifelevels = getPrioritiesBYPid(wife)
FirstLevel = "";
FirstDate = '';
Loop through the days of the month {
FirstDate = ( FirstDate == '' ) ? TodayDate : FirstDate;
husbandLevel = getPriority(TodayDate,husbandlevels);
wifeLevel = getPriority(TodayDate,wifelevels);
FortodayLevel = (husbandLevel > wifeLevel ) ? 1 : 2;
if ( FortodayLevel != FirstLevel || FirstLevel != '' ) {
// Insert in the table
-- FirstDate,TodayDate - 1,FirstLevel
FirstLevel = FortodayLevel;
FirstDate = TodayDate;
}
}
到目前为止,您尝试了什么?是否涉及数据库?你的问题不清楚,范围太广,不知道是什么意思。请更具体地说“请给我提供一些有价值的建议。如何使用PHP来做到这一点”-如果你自己根本没有任何方法,那么我会说这是一个过于宽泛的问题。与这不是一个代码编写服务一样,这也不是一个你可以简单地“外包”你的整个算法开发工作的地方。伙计们,我知道这不是第一个没有任何研究的问题,但请记住,该用户是新用户,没有您在该网站的经验。用户3049475,他们是对的,但是如果你在这里发表文章,你应该展示你到现在为止的进步,因为这使得每个人都可以更容易地开始解决你的问题,而不浪费时间。我建议你通读这本指南以及如何写一篇文章。然后你可以回答这个问题,我相信会有解决办法的