MySQL / PHP несколько дат и времен

0

У меня есть таблица jobs в базе данных MySQL; - Каждое задание принадлежит пользователю (зарегистрированному в users) - Каждое задание имеет даты и время для выполнения.

В настоящее время даты и время хранятся в сериализованных массивах временных меток UNIX (для использования PHP). Но это не оптимально для того, чтобы попытаться получить, скажем, "задания для tomotrrow для пользователя 123", потому что PHP должен сначала перебирать каждое задание, принадлежащее пользователю 123, десериализовать массив и посмотреть, есть ли временные метки завтра. /p >

Создание таблицы dates4jobs сохранит атомарность, но все равно не будет оптимальным, потому что мне придется запрашивать "все задания" для "user 123", а затем искать все "даты" с соответствующим указателем на пользователя 123 рабочих мест и блаблабла...

что нао? ^^

Теги:
date

1 ответ

0
Лучший ответ

Просто предложение: используйте столбец времени в таблице jobs вместо сериализации (или обоих). Если вы сохраняете несколько временных меток, может быть хорошей идеей сделать ваше предложение в таблице datejoblookup со ссылкой на jobs.id и каждую дату. Я бы запретил вручную выполнять итерацию через данные в PHP. Затем вы можете запустить запрос "jobs for tomorrow для пользователя 123" с одним из них:

SELECT job.* FROM `jobs` job, `users` user, `datejoblookup` date
WHERE date.jobid = job.id            --make sure the date belongs to this job
AND job.userid = user.id             --make sure the job belongs to the right user
AND user.name = '123'                --select the user with name '123'
AND DATE(date.timestamp) = CURDATE() --select jobs for today

Также подумайте о расширяемости и запросах, которые могут потребоваться для запуска в будущем. Эта конструкция позволит включить такие запросы, как "задания с даты1 до даты2"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню