我有加入表的查詢:MySQL的 - 加入三個表和顯示數據(即使沒有發現匹配)
- 特色{ID,名稱,描述,圖片}
- 醫生{ID,名稱,描述,照片}
doc_spec {ID,id_doc,id_spec}
SELECT d.id, d.name, d.description, d.photo, GROUP_CONCAT(s.name SEPARATOR ', ') AS 'specialty' FROM doc_spec ds INNER JOIN doctors d ON ds.id_doc=d.id INNER JOIN specialties s ON ds.id_spec=s.id GROUP BY d.id
查詢完美地工作,從兩個表中檢索數據使用doc_spec表,連接其他兩個但問題是當我有一個醫生,但不有一個指定的專業。
我該怎麼做,以便在doc_spec表上沒有匹配時不顯示該行,而是在專業列上檢索該行的NULL值?如果可能,而不是顯示爲空,如果它可以保存「沒有專業指定」的值的話,那將是完美的。
UPDATE
我找到了一種方法,通過使用RIGHT JOIN和LEFT JOIN,但我不知道這是否是這樣做的正確的路,我仍然希望能夠堅持做像「沒有指定專業」而不是null的值。
SELECT
d.id,
d.name,
d.description,
d.photo,
GROUP_CONCAT(s.name SEPARATOR ', ') AS 'specialty'
FROM
doc_spec ds
RIGHT JOIN
doctors d
ON
ds.id_doc=d.id
LEFT JOIN
specialties s
ON
ds.id_spec=s.id
GROUP BY
d.id
您是否嘗試過的,而不是一個'INNER JOIN'一個'LEFT OUTER JOIN'? – smdrager
只適用**左**不適用,但如果適用**如果我同時使用**右**和**左**,謝謝 –
啊,是的,沒有看到你以'doc_specs'開頭。很好。 – smdrager