php的order by,PHP:高级ORDER BY

博主正尝试在房地产网站的MySQL查询中,根据列表的`completion_score`和`listing_last_updated`字段进行排序。目标是根据列表的完成状态和更新时间调整排序权重,如最近一周完成的加30分,最近一月完成的加20分,过去三个月完成的加10分。目前的SQL语句存在语法错误,导致解析失败。博主寻求解决方案,希望能实现每日自动调整分数并据此排序。
摘要由CSDN通过智能技术生成

我创建了一个房地产网站,我希望按照上次更新和列表的完整性对列表进行排序.所以我一直试图弄清楚如何通过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"

标签:php,mysql

来源: https://codeday.me/bug/20190626/1293774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值