В настоящее время у меня есть запрос:
select a.day_of_week,
a.time,
a.id,
'2012-01-10' as scheduleDate,
a.max_customers,
(SELECT count(b.id)
from appointments b
where b.date = '2012-01-10' AND
b.schedule_id = a.id) as current_customers
from schedules a
where a.showroom_id = 1 and
a.day_of_week = DATE_FORMAT('2012-01-10','%W')
Предположим, что '2012-01-10' является переменной.
У нас есть приложение, которое является календарем. Когда пользователь щелкает день, этот запрос запускается, чтобы получить список слотов и количество людей, забронированных на данный момент (current_customers).
Вот странность - теперь они хотят иметь возможность получать весь месяц за раз. В настоящее время наш разработчик по сути делает 30 запросов, чтобы сделать это через цикл FOR в PHP.
Я думал о создании хранимой процедуры для этого, но вы все еще используете цикл. Объединение - это еще один вариант, но я думаю, это большой запрос.
Кто-нибудь имеет хорошее представление о том, как создать запрос, который выполнял бы вышеуказанное, но для всех дней в месяце или с переменным количеством дней?
Структура таблицы -
назначения
Тип поля Разрешить пустое значение по умолчанию
id int (11) Нет
customer_id int (11) Нет
associate_id int (11) Да
schedule_id int (11) Нет
дата дата №
result_id int (11) Да
текст заметки №
is_active tinyint (1) № 1
созданная временная метка No 0000-00-00 00:00:00
updated_at timestamp No 0000-00-00 00: 00: 00
расписания
Тип поля Разрешить пустое значение по умолчанию
id int (11) Нет
showroom_id int (11) Нет
перечисление day_of_week («понедельник», «вторник», «среда», «четверг», «пятница», «суббота», «воскресенье») №
время нет № 1028 *
max_customers int (11) Нет
is_active tinyint (1) № 1
созданная временная метка No 0000-00-00 00:00:00
updated_at timestamp No 0000-00-00 00: 00: 00