PHP:高级ORDER BY
发布时间:2020-12-13 17:09:16 所属栏目:PHP教程 来源:网络整理
导读:我创建了一个房地产网站,我希望按照上次更新和列表的完整性对列表进行排序.所以我一直试图弄清楚如何通过 mysql(completion_score)中的字段与最近更新的列表进行排序.完成得分将是100分,0分为差,100分完全完成.我将在添加和更新列表并将其保存在mysql数据库
我创建了一个房地产网站,我希望按照上次更新和列表的完整性对列表进行排序.所以我一直试图弄清楚如何通过
mysql(completion_score)中的字段与最近更新的列表进行排序.完成得分将是100分,0分为差,100分完全完成.我将在添加和更新列表并将其保存在mysql数据库中时计算完成分数.我猜我将不得不以某种方式结合日期和completion_score来制作一个总数,但我不确定如何在一个SELECT中执行此操作.
目前我正在使用这个(显然不考虑完成得分): ORDER BY ".$wpdb->prefix."fsrep_listings.listing_featured DESC,".$wpdb->prefix."fsrep_listings.listing_last_updated DESC 我在想,如果它在上周完成,我会在完成分数上加30分,如果在上个月完成,我会在完成分数上加20分,如果在过去三个月内完成我会在完成得分上加10分.然后我可以通过这个更新的完成分数来订购它.问题是如何让它每天更改以调整分数. 按照Mark的建议,我输入以下代码: ORDER BY $wpdb->prefix.'fsrep_listings.listing_score' + if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 WEEK,30,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 MONTH,20,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 3 MONTHS,10,0)))' DESC'; 然后我收到了以下Parse错误:语法错误,/ home /中的意外T_IF … 解决方法
怎么样的东西:
order by completeion_score - (to_days(now()) - to_days(completion_date))/3 或完成后经过的天数的某些类似功能. UPDATE 我上面给出的代码只有SQL,没有涉及到PHP,因此除了$wpdb->前缀部分之外,所有内容都应该在引号内. (对于@Mark的回答以及大多数给你代码的人来说,这都是我想象的.) 要添加前缀,您的代码应如下所示: "ORDER BY ".$wpdb->prefix."fsrep_listings.listing_score - (to_days(now()) - to_days(".$wpdb->prefix."fsrep_listings.listing_last_updated))/3" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |