根據JOIN
的結果生成WHERE
子句的一部分的最簡單方法是什麼?我知道這是一個非常模糊的和混亂的問題,所以請允許我簡單地告訴你我想實現:WHERE子句如果匹配
SELECT m.member_id, m.first_name, m.last_name
FROM cal_form_answers a
INNER JOIN cal_form_elements e
USING(element_id)
INNER JOIN cal_forms f
USING(form_id)
LEFT JOIN members m
USING(member_id)
WHERE f.org_id = ?
AND m.org_id = ?
AND e.form_id = ?
GROUP BY a.member_id
ORDER BY a.member_id
首先,注意問號是不是無效的語法,我使用笨,這使用它們作爲綁定參數。
第10行(AND m.org_id = ?
)取決於LEFT JOIN
是否實際找到某物。如果members
表中沒有匹配,則第10行變得不必要。事實上,這成了一個問題。我想限制第10行的結果,除非成員表中沒有匹配。在這種情況下,我只想忽略WHERE
條款的那部分內容。
我相信這可以使用子查詢來實現,但我承認不確定如何制定語法。有沒有其他方法?如果是的話,這個結果如何能夠實現?如果沒有其他方式,有人可以演示一個子查詢的實現情況,並解釋它是如何工作的?
謝謝!
那麼,爲什麼不在連接條件部分指定這些條件呢? – zerkms