найти последнюю запись в БД и все остальные перед ней в другой таблице - PullRequest
0 голосов
/ 12 октября 2011

Это довольно простая вещь в теории, но я не знаю, как это сделать. Что мне нужно, это метод, чтобы найти последнюю отметку времени / записи в таблице под названием «ответы» в БД MySQL. И после нахождения этого, чтобы найти все 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 ]

1 голос
/ 12 октября 2011

Конечно, это может быть чисто решение для базы данных, которое не требует от PHP ничего делать?

Предполагая, что таблицы находятся в одной базе данных, обе имеют столбец timestamp и называются answers иvotes соответственно, затем:

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

РЕДАКТИРОВАТЬ: Заменены имена в соответствии с вашей схемой, но я не вижу столбец timestamp в answers?

0 голосов
/ 12 октября 2011

Для получения последней метки времени вы можете использовать ...

SELECT timestamp_field FROM answers ORDER BY timestamp_field DESC LIMIT 1

Затем выполните второй запрос, соответствующий результату этого запроса.

0 голосов
/ 12 октября 2011
select * from ip x where x.timestamp <= (select max(y.timestamp) from answer y)
...