2012-03-02 4 views
6

私の仕事のためのデータベースを構築していますが、このクエリの作成方法を理解することができません。複数の列を持つmysqlの結合が残っています

私の問題に関連するテーブルは以下のとおりです。

仕事

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 ---ジョブテーブルスキーマ


- 表mmrljob


DROP TABLE IFはmmrlをEXISTS。 job;

テーブルが存在しない場合は、mmrlが作成されます。job

job INT(11)NOT NULL AUTO_INCREMENT、

type VARCHAR(45)NULL、

status VARCHAR(45)NULLデフォルトNULL、

timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP、

PRIMARY KEY(job

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

答えて

11

変更

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' 

EDIT

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 
関連する問題