#mysql #sql #database #database-design
Вопрос:
У меня есть две таблицы, slots
и appointment
ниже приведены таблицы —
Я хочу запросить из таблицы slots
и сопоставить некоторые конкретные условия из appointment
таблицы
Вот что я хочу сделать —
Я хочу запросить таблицу « slot.*
Из слотов» для конкретного doctor_id
, и я хочу отфильтровать идентификаторы слотов, которые уже есть в таблице назначений на определенную дату.
Вот пример использования (из данных на приведенных выше рисунках) —
Если я включу вход doctor_id = 1
date = '2021-05-09'
, он должен предоставить мне доступные слоты, а это значит, что он должен предоставить мне информацию о slot_id = 3
Я провел так много мозговых штурмов, но не могу задать этот вопрос.
Ответ №1:
Вы можете использовать отрицательное условие, например «не в» или «не существует», и присоединиться ко второй таблице.
Например, что-то вроде этого: select slot_id from slots where doctor_id=? and not exists (select slot_id from appointment where appointment.slot_id=slots.slot_id and appointment.doctor_id=slots.doctor_id and date=?)
. Я не уверен, может ли один и тот же слот использоваться несколькими врачами, если не удалить условие равенства врачей.
Комментарии:
1. Вау, это сработало идеально, как я и хотел. Я запрошу больше и дам вам знать, как это работает.