2014-09-02 63 views
0

我有這樣的SQL語句有條件加入MySQL的

SELECT f.form_id 
    , f.tba_id 
    , f.patient_id 
    , f.location_code 
    , f.date_created 
    , p.lmp 
    , p.first_name 
    , p.last_name 
    , p.phone 
    , u.phone 
    FROM forms f 
    JOIN patients p 
    ON f.patient_id = p.id 
    JOIN users u 
    ON f.tba_id = u.id 
WHERE f.patient_id = 20 

返回以下JSON

[ 
{ 
    "form_id": "11", 
    "tba_id": "10", 
    "patient_id": "20", 
    "location_code": "", 
    "date_created": "2014-08-30 16:46:16", 
    "lmp": "", 
    "first_name": "Mariam", 
    "last_name": "Oti", 
    "phone": "2348061356894" 
}, 
{ 
    "form_id": "12", 
    "tba_id": "10", 
    "patient_id": "20", 
    "location_code": "", 
    "date_created": "2014-08-30 17:02:26", 
    "lmp": "", 
    "first_name": "Mariam", 
    "last_name": "Oti", 
    "phone": "2348061356894" 
} 
] 

我也想從f.form_id另一個表加入,但也並不總是對的記錄對於每form_id即警報表,如果我執行語句

SELECT status 
    , cug_id 
    , alert_id 
    FROM alert 
WHERE form_id = 11 

SELECT status 
    , cug_id 
    , alert_id 
    FROM alert 
WHERE form_id = 12 

我可能會得到第一條語句的一條記錄和第二條語句的0條記錄。

我的目標是得到這樣

[ 
{ 
    "form_id": "11", 
    "tba_id": "10", 
    "patient_id": "20", 
    "location_code": "", 
    "date_created": "2014-08-30 16:46:16", 
    "lmp": "", 
    "first_name": "Mariam", 
    "last_name": "Oti", 
    "phone": "2348061356894", 
    "status": "0", 
    "cug_id": "17", 
    "alert_id": "20" 
}, 
{ 
    "form_id": "12", 
    "tba_id": "10", 
    "patient_id": "20", 
    "location_code": "", 
    "date_created": "2014-08-30 17:02:26", 
    "lmp": "", 
    "first_name": "Mariam", 
    "last_name": "Oti", 
    "phone": "2348061356894", 
    "status": "", 
    "cug_id": "", 
    "alert_id": "" 
} 
] 

結果所以,當我嘗試做一個加入我最終得到一個記錄,而不是

+0

見左[OUTER]加入 – Strawberry 2014-09-02 11:24:25

回答

0

使用左連接的警報表

SELECT f.form_id 
    , f.tba_id 
    , f.patient_id 
    , f.location_code 
    , f.date_created 
    , p.lmp 
    , p.first_name 
    , p.last_name 
    , p.phone 
    , u.phone 
    , a.status 
    , a.cug_id 
    , a.alert_id 
    FROM forms f 
    JOIN patients p 
    ON f.patient_id = p.id 
    JOIN users u 
    ON f.tba_id = u.id 
    left join alert a 
    on a.form_id = f.form_id 
WHERE f.patient_id = 20