我现在有这个 SQL 查询;
SELECT * FROM `articles` WHERE
`type` = 'press' AND (`published` = '1' AND `time_start` >= '".$time_today."')
ORDER BY `time_start` ASC, `id` DESC LIMIT 5
想法是始终显示 5 篇文章。 time_start是开始时间,time_end是结束时间(就是PHP的mktime)。
文章基本上是日历条目,只应显示从明天开始的条目(工作中),并且只显示前五个条目。目前,即将到来的日历点不到五个。
我基本上如何让它执行此查询 if num_rows > 5,否则用旧的填满?我应该查看 PHP 回退,只是用不同的查询(显示 5 篇“最新”文章)覆盖数据,还是有办法在查询本身中解决这个问题?
问题与其说是如何做,不如说是寻找正确的方法,希望这不违反规则
最佳答案
因此看起来您想要一个从开始时间开始包含 5 个事件的窗口。它会显示以前的事件,以防即将发生的事件较少。
这里有两个可行的选择..
如果您乐于在应用程序逻辑中处理此问题:
运行:
SELECT *
FROM articles
WHERE type = press
AND published = '1'
AND time_start >= :time_today
ORDER BY time_start ASC, id ASC /* 'I thought id should be ascending here */
LIMIT 5
计算你还需要多少额外的文章然后运行:
SELECT *
FROM articles
WHERE type = press
AND published = '1'
AND time_start < :time_today
ORDER BY time_start DESC, id DESC
LIMIT :slack
只需反转第一个结果集并将第二个结果集附加到它并继续。
如果您想在数据库中完成这一切,我可能会这样做:
SELECT *
FROM ((
SELECT *
FROM articles
WHERE type = press
AND published = '1'
AND time_start >= :time_today
ORDER BY time_start ASC, id ASC
LIMIT 5
)
UNION ALL
(
SELECT *
FROM articles
WHERE type = press
AND published = '1'
AND time_start < :time_today
ORDER BY time_start DESC, id DESC
LIMIT 5
)) window_extents
ORDER BY time_start DESC, id DESC
LIMIT 5
这是通过为窗口选择所有可能的记录然后缩小结果范围来实现的。它还应该充分利用您的索引。
N.B. 看起来您是在将日期连接到查询中而不是将其绑定(bind)到...我会改掉这样做的习惯,即使在安全环境中,除非绝对必要。
关于php - 根据日期显示 5 个数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256038/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳