Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 请提供MySQL查询支持_Php_Mysql - Fatal编程技术网

Php 请提供MySQL查询支持

Php 请提供MySQL查询支持,php,mysql,Php,Mysql,我有一张mysql表格,可惜第一篇文章没有图片 Team_id,entry_date, entry_time,gridref "20","2011-12-14","10:21:00","496218" "20","2011-12-14","10:43:02","349217" "21","2011-12-14","10:48:00","351213" "22","2011-12-14","11:58:00","327216" "22","2011-12-14","11:21:00","32821

我有一张mysql表格,可惜第一篇文章没有图片

Team_id,entry_date, entry_time,gridref
"20","2011-12-14","10:21:00","496218"
"20","2011-12-14","10:43:02","349217"
"21","2011-12-14","10:48:00","351213"
"22","2011-12-14","11:58:00","327216"
"22","2011-12-14","11:21:00","328214"
"23","2011-12-14","11:33:00","351210"
"23","2011-12-14","10:42:11","350210"
"23","2011-12-14","11:11:00","350208"
"24","2011-12-14","10:39:00","329209"
"24","2011-12-14","11:40:00","328211"
"27","2011-12-14","11:04:31","344226"
"29","2011-12-14","11:32:58","328208"
获取此信息的SQL是

SELECT team_id, entry_date, entry_time, gridref 
FROM `tlog` 
WHERE gridref != '' 
    AND team_id != 0 
    AND (entry_date = (SELECT MAX(entry_date) FROM `tlog`)) 
ORDER BY `tlog`.`team_id` ASC
几天内有相当多的数据,每个团队的条目可以以任何顺序请求,如果可以在一天后输入,则不必在信息发布时请求。我遇到了用户试图输入yyyy-mm-mm hh:mm格式的问题,因为他们缺少空格和字符。所以分开的日期和时间解决了这个问题

还有一些条目与团队无关或没有gridref。但是,每个条目都有一个条目日期和条目时间。输入日期的MySQL格式为日期,输入时间的MySQL格式为时间


我有一个大四的时刻,试图为每一个队获得最后的参赛资格。有人能扔一根骨头给我嚼一下吗。

也许像这样的东西会有帮助:

SELECT MAX(entry_date) FROM `tlog` WHERE gridref != '' AND team_id != 0 GROUP BY team_id

只需将日期和时间存储在datetime或int timestamp列中。是的,可以这样做,但你得不到利润,而是问题

在视图层修复此问题。如果用户在键入日期时出错,请使用javascript日历控件,让他们选择日期和时间


如果不可能,那么使用和一些字符串连接来解析输入

您需要在子查询中获取每个团队的最大日期,然后获取每个团队该日期的最大时间,然后加入外部查询,查询团队id、日期和时间:

select t.teamid, t.entryDate, t.entryTime, t.gridRef  
from tlog t  
inner join (select t2.teamid, med.ed, max(entryTime) et from tlog t2  
                 inner join (select teamid, max(entryDate) ed from tlog where teamid > 0 and gridRef <> '' group by teamid) med on med.teamid = t2.teamid and med.ed = t2.entryDate group by t2.teamid, med.ed) met on met.teamid = t.teamid and met.ed = t.entryDate and met.et = t.entryTime

显然,为此,您可能需要转换为支持连接的数据类型

可能需要使用GROUP BY tlog.team_id?尝试使用SELECT*FROM tlog WHERE gridref!=和团队id!=0订单按tlog.entry\u日期描述组按tlog.team\u id;获取每个团队的最后一个条目是什么意思?如果您查看上面的数据片段,您会注意到每个团队id至少出现两次。以上数据只是几天内所有数据的一小部分。最后一个日期/时间条目是我想要的,因此我可以返回team_id和gridref。我使用这个gridref在谷歌地图上绘制每个团队的最后位置。我最终使用[link]选择t.team_id,t.entry_date,t.entry_time,t.gridref from tlog t internal join select t2.team_id,med.ed,maxentry_time et from tlog t2 internal join select team_id,maxentry\u date ed from tlog其中team\u id>0 group by team\u id med on med.team\u id=t2.team\u id和med.ed=t2.entry\u date其中gridref group by t2.team\u id、med.ed在met.team\u id=t.team\u id和met.ed=t.entry\u日期和met.et=t.entry\u时间[/link]时间戳的问题是,条目可能会无序输入,并且可能会在2-3天后输入,因此按时间戳排序在这种情况下不起作用。@user1227400时间戳列不必用当前时间戳填充。是的,我知道,但出于某些管理原因,我不能使用组合日期/时间字段。但这不会按时间给出最后一个条目。嗯,我尝试过,其中一个得到的结果与另一个相同。我会继续比赛,看看我的表现。啊哈,现在我们很接近了,但是有些记录没有球队id或者没有gridref。所以我想过滤掉所有没有团队id的记录,或者gridref为空,只显示团队id>0且gridref不为空的每个记录的最后记录!=。因此,您只需将这些条件和任何其他条件添加到最内部的循环中,以便尽早将它们从数据集中排除。这些检查的语法因数据类型和数据库而异,因此您可能需要对实现进行调整。我已经展示了SQL server。好的,最后一个将返回所有最后的记录,但并非所有记录都有GridRef。换句话说,它在某些记录上返回空白的gridref。顺便说一句,感谢您迄今为止所做的所有努力。正如我所说的,您可能需要根据数据类型和数据库更改where子句-这对我很有用。您需要根据您的版本更改检查。只需从tlog中执行一个简单的select,并解决如何排除不需要的行,例如检查null/empty string。然后使用相同的条件更新此处的内部查询
max(entryDate + ' ' + entryTime)