mysql оставил соединение с несколькими столбцами - PullRequest
7 голосов
/ 02 марта 2012

Я создаю базу данных для своей работы, и мне трудно понять, как создать этот запрос.

Таблицы, относящиеся к моей проблеме:

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

можно ли использовать подзапрос?Я могу выяснить эти более простые запросы, но у меня действительно есть проблемы с этими более сложными запросами соединения и подзапроса.приветствуется любой совет.

РЕДАКТИРОВАТЬ --- Схема таблицы заданий


- Таблица mmrl. job


DROP TABLE ЕСЛИ СУЩЕСТВУЕТmmrl. job;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ mmrl. job (

job INT (11) NOT NULL AUTO_INCREMENT,

type VARCHAR (45) NULL,

status VARCHAR (45) NULL DEFAULT NULL,

timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP при обновлении CURRENT_TIMESTAMP,

*49ПЕРВИЧНЫЙ КЛЮЧ (job))

ДВИГАТЕЛЬ = InnoDB

УСТАНОВКА ПО УМОЛЧАНИЮ ПО УМОЛЧАНИЮ = latin1;

1 Ответ

12 голосов
/ 02 марта 2012

изменить

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'

на

LEFT JOIN Surgical_Planning ON job.job = Surgical_Planning.job_job
WHERE Scan.job_job = job AND phys.job_job = job
AND med.job_job = job AND job.type = 'medical'

РЕДАКТИРОВАТЬ:

левое соединение происходит против таблицы слева от фактического синтаксиса LEFT JOIN.Переместите задание в конец списка и попробуйте снова.

FROM patient_has_physician as phys, Scan, Medical_Model as med, job
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...