在DB中查找最新条目以及在其他表中查找其他所有条目

时间:2011-10-12 14:22:49

标签: php function timestamp

这在理论上是相当容易的事情,但我还没有弄清楚如何做到这一点。我需要的是一种在MySQL数据库中查找名为“answers”的表中的最新时间戳/条目的方法。在找到这个之后,通过在所述提及'答案'条目之前发生的时间戳找到存储在名为'ip'的表中的所有IP。

有什么想法吗?我猜一个if()函数会是最好的方法吗?

编辑:表格结构,其中'ip'存在。

CREATE TABLE IF NOT EXISTS `votes` (
`id` int(250) NOT NULL AUTO_INCREMENT,
`ip` varchar(30) NOT NULL,
`answer_id` int(250) NOT NULL,
`poll_id` int(250) NOT NULL,
`timestamp` int(250) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

“回答”的表格

CREATE TABLE IF NOT EXISTS `answers` (
`id` int(250) NOT NULL AUTO_INCREMENT,
`poll_id` int(250) NOT NULL,
`answer` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

3 个答案:

答案 0 :(得分:1)

当然,这可以是一个纯数据库解决方案,不需要在PHP中做任何事情吗?

假设这些表位于同一个数据库中,两者都有一个timestamp列,分别命名为answersvotes,那么:

SELECT * FROM votes v
WHERE v.timestamp <= (SELECT max(a.timestamp) FROM answers a)

编辑:根据您的架构替换了名称,但我在timestamp中没有看到answers列?

答案 1 :(得分:0)

select * from ip x where x.timestamp <= (select max(y.timestamp) from answer y)

答案 2 :(得分:0)

要获取最新的时间戳,您可以使用...

SELECT timestamp_field FROM answers ORDER BY timestamp_field DESC LIMIT 1

然后运行与该查询的结果匹配的第二个查询。