SQL — Как выполнить запрос из одной таблицы с условиями из другой таблицы

#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. Вау, это сработало идеально, как я и хотел. Я запрошу больше и дам вам знать, как это работает.