Я создаю базу данных для своей работы, и мне трудно понять, как построить этот запрос.
Таблицы, имеющие отношение к моей проблеме:
job
Surgical_Planning — имеет задание как внешний ключ, существует для одних заданий, нет для других
Medical_Model — имеет задание как внешний ключ, 1 к 1 связь с заданием
Это рабочий запрос, в котором у меня нет информации о хирургическом планировании.
SELECT
job,
physician_idphysician as Physician,
patient_idpatient as Patient,
status,
DATE_FORMAT(scan_date, '%M %e, %Y, %l:%i%p') as Scan_Date,
DATE_FORMAT(timestamp, '%M %e, %Y, %l:%i%p') as Recieved,
DATE_FORMAT(date_required, '%M %e, %Y, %l:%i%p') as Date_Required
FROM
job, patient_has_physician as phys, Scan, Medical_Model as med
WHERE
Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical
Я думаю, что хочу выполнить левое соединение, чтобы оно отображало каждое задание по порядку, со всей информацией в запрос выше, но затем, когда для работы есть Surgical_Planning #, я хочу, чтобы для этого также был столбец.Вот моя попытка, которая не работает
SELECT
job,
physician_idphysician as Physician,
patient_idpatient as Patient,
status,
DATE_FORMAT(scan_date, '%M %e, %Y, %l:%i%p') as Scan_Date,
DATE_FORMAT(timestamp, '%M %e, %Y, %l:%i%p') as Recieved,
DATE_FORMAT(date_required, '%M %e, %Y, %l:%i%p') as Date_Required
FROM
job, patient_has_physician as phys, Scan, Medical_Model as med
LEFT JOIN Surgical_Planning ON job.job = Surgical_Planning.job_job
AND Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical'
Я могу заставить это базовое левое соединение работать так, как я хочу, но если я хочу добавить больше столбцов, как указано выше, это не сработает.
SELECT job, planning_id
FROM job
LEFT JOIN Surgical_Planning ON job = Surgical_Planning.job_job
Можно ли также использовать подзапрос? Я могу понять эти более простые запросы, но у меня действительно есть проблемы с этими более сложными соединениями и подзапросами. любые советы приветствуются.
EDIT --- Схема таблицы заданий
-- Таблица mmrl
. job
УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ mmrl
. задание
;
СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ mmrl
. job
(
job
INT(11) NOT NULL AUTO_INCREMENT ,
type
VARCHAR(45) NULL ,
status
VARCHAR(45) NULL DEFAULT NULL ,
timestamp
TIMESTAMP NOT NULL ПО УМОЛЧАНИЮ CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( job
) )
ENGINE = InnoDB
НАБОР СИМВОЛОВ ПО УМОЛЧАНИЮ = latin1;