Хорошо, у меня есть две таблицы, к которым я присоединяюсь и делаю выбор, чтобы вернуть три поля (временная метка, сообщение и articleNum). Теперь эти данные в основном представляют собой журнал того, когда статья была создана и изменена, мне нужно написать логику для обработки этих трех полей, которые я получил. Чтобы определить, когда статья была создана и / или изменена в последний раз, мне нужно просмотреть сообщение и найти ключевые слова («добавлено» для создания и «обновлено» для изменения). У меня есть результаты запроса в ассоциативном массиве, и в конечном итоге я хотел бы, чтобы конечный результат был в ассоциативном массиве, где articleNum был ключом, а массив с двумя значениями (созданный, измененный) был ключом. Иногда, однако, не всегда будет измененное значение, но всегда будет создано значение. Есть идеи, как я могу начать такую проблему?
РЕДАКТИРОВАТЬ Насколько я могу судить, похоже, что дата хранится как bigint в секундах 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. Тем не менее, спасибо за предложения.
Судя по "Edit 2", похоже, я был на правильном пути. Все равно поможет, если вы разместите таблицы db - тогда кто-нибудь даст вам хороший ответ.
Привыкайте к использованию псевдонимов таблиц, это избавит вас от лишнего набора текста.






Не уверен, что понимаю вопрос ..
Вы хотите просмотреть сообщение и извлечь время создания и время изменения?
Если это так, то какой формат даты / времени? Эту информацию должно быть очень легко найти с помощью регулярного выражения.
Ян
Редактировать -
Если вы хотите извлечь их из сообщения, которое вы получаете из запроса, то регулярные выражения являются вероятным кандидатом для выполнения этой задачи.
Разместите образец сообщения.
Попробуйте что-то вроде этого:
$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'
Это плохо сформулированный вопрос. Немного пахнет это
Какие две таблицы? Что такое поле сообщения? Предположительно события?
Почему бы вам просто не указать «создано» и «обновить» в таблицах статей?
Вы уверены, что ваш дизайн хорош?
Ответы предназначены для ответов, если вы хотите прокомментировать его вопрос, используйте комментарии.
Пожалуйста, опубликуйте схему своей таблицы!