2010-09-10 2 views
1

У меня есть таблица mysql с пользователями и их еженедельный календарь.Проблема с запросом повестки дня/доступности

Каждый пользователь может установить свою собственную доступность на неделю (утром, днем, ночью/с понедельника по субботу), и это не будет часто меняться, почти никогда.

Представьте те пользователи, личные тренеры в тренажерном зале, или теннисные корты вы можете забронировать ...

Моей проблема здесь, чтобы найти правильный запрос (или, может быть, даже переосмысление пути я храню эти данные в MySQL) для того, чтобы внешний веб-пользователя, чтобы проверить наличие их на основе 3 контрольных кнопок [o]morning, [o]afternoon, and [o]night

Так что я хочу, чтобы мой веб-пользователь, чтобы перейти на веб-сайт и проверить/снимите эти кнопки для того, чтобы увидеть, какой из них (личный тренер или что-то еще)

Итак, если я проверю Утро, я могу видеть только людей, которых можно найти, также (но не только), утром (потому что персональный тренер может быть доступен утром, а также днем ​​и т. Д.) ..

это может звучит легко проблему, но я имею трудное время ...

любая помощь ценится

Спасибо!

+0

Вы приняли только один ответ .... –

ответ

2

Это не вопрос алгоритма, это скорее вопрос DBA. Скорее всего, у вас будет таблица пользователей и таблица доступности.

user: 
    userid 
    ... 

availability: 
    userid 
    day 
    timeofday 

Когда данный запрос, например, как в понедельник утром в среду после полудня (при условии, что отношения (понедельник или среда) и (утром или днем)) вы можете сделать такой запрос.

SELECT userid FROM availability WHERE day='wednesday' OR day is 'monday' AND timeofday='morning' OR timeofday='afternoon' 
1

Ответ на этот вопрос будет зависеть от структуры БД. Если вы сохраняете время доступности как 1, 2, 3 или любую комбинацию таких 12, 13, 123, 23, то вы можете просто использовать регулярное выражение MYSQL 10, чтобы ограничить результаты на основе критерия ввода.

Я хотел бы предложить Somthing как:

SELECT trainer FROM trainer_table WHERE availaility regexp '[Limiting Criteria]' 

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

Если вы хотите получить более конкретную помощь, вам может быть полезен пример вашей собственной структуры таблицы.

+0

благодарит Meakins. Я на самом деле думаю или перестроить таблицу, я не ограничен старым db, это то, что я делаю с нуля, поэтому я могу выбрать лучший вариант, и я все еще исследую лучший метод. Интересно, как работает «[Ограничивающие критерии]» ... я никогда не использовал эту команду. – Francesco

+0

также могу сказать, что моя первая попытка состояла в том, чтобы создать отдельную таблицу, и структура была чем-то вроде monday_morning, monday_afternoon, monday_night, tuesday_morning ... и т. д., и значения были всего 1 или 0, если тренер был доступен или нет ... очень наивный подход, потому что я храню нуль, где я просто могу просто оставить их ... – Francesco

Смежные вопросы