繁体   English   中英

MySQL / PHP处理查询帮助

[英]MySQL/PHP processing a query help

好的,我要加入两个表并进行选择以返回三个字段(时间戳,消息和articleNum)。 现在,这些数据基本上是创建和修改文章的日志,我必须编写逻辑来处理返回的这三个字段。 为了弄清楚何时最后创建和/或修改文章,我需要查看消息并寻找关键字(“创建”为“添加”,修改为“更新”)。 我将查询结果放回assoc数组中,最终希望将最终结果保存在assoc数组中,其中articleNum为键,而两个值数组(创建,修改)为键。 虽然有时候,并非总是会有修改后的值,但是总会有一个已创建的值。 关于我什至会引发这样的问题的任何想法吗?

编辑据我所知,日期似乎以big秒的形式存储在Unix秒中。 澄清:创建和修改的值不是表中的字段,我需要从消息字段中弄清楚。 总是会有一个额外的时间,但是有时可能会有0个或更多的更新消息,所以我需要弄清楚最新消息。

编辑2好的,很抱歉这个问题的措词。 在看了一段时间之后,我意识到我可以在两个SQL语句中完成所有这些工作。 为了查找添加的日期,我使用了:

"SELECT MIN(action_logs.time_added), article.number
 FROM action_logs
 JOIN proposal ON action_logs.article_num = article.number
 WHERE action_logs.message LIKE '%added%'
 GROUP BY article.number"

除非使用MAX,否则最后修改可能会做同样的事情。 谢谢你的建议。

这是一个措辞不佳的问题。 它闻起来有点这个

这两个表是什么? 什么是消息字段? 大概是事件吗?

您为什么不只在商品表中“创建”和“更新过”?

您确定您的设计合理吗?

不确定我是否理解问题。

您想查看消息并提取创建时间和修改时间吗?

如果是这样,日期/时间格式是什么? 使用正则表达式查找信息应该非常容易。

伊恩

编辑 -

如果要从查询中获取消息中提取它们,则正则表达式很可能适合完成此任务。

发布示例消息。

尝试这样的事情:

$articles = array();
while ($row = mysql_fetch_assoc($result)) {
    $articles[$row['articleId']] = array(
        'created'  => $row['created'],
        'modified' => $row['modified']
    );
}

我在这里做一些假设:

如果您在表中为每个消息(添加/更新)存储一行,那么此查询将为每篇文章返回一行,其中包含您需要的列(articleNum,Created,Updated):

SELECT 
  A.articleNum, 
  MCreated.Timestamp AS Created, 
  MUpdated.Timestamp Updated
FROM Articles A
JOIN Messages MCreated 
  ON MCreated.articleNum = A.articleNum
  AND MCreated.Message = 'added'
LEFT JOIN Messages MUpdated
  ON MUpdated.articleNum = A.articleNum
  AND MUpdated.Message = 'updated'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM