所以......我的右連接不起作用。這聽起來很模糊,而且所有的事情都考慮到了,它可能實際上是有效的。但是,對於我的生活,我無法弄清楚發生了什麼事情!爲了簡單起見,這是我的查詢。我明白它有點本地化,但它非常簡單。正確加入不加入?
SELECT a.answer, a.element_id, e.element_type, e.question, e.description
FROM cal_form_answers a
RIGHT JOIN cal_form_elements e
USING(element_id)
INNER JOIN cal_forms f
USING(form_id)
WHERE f.org_id = ?
AND e.form_id = ?
AND
(
a.member_id = ?
OR a.member_id IS NULL
)
GROUP BY a.element_id
ORDER BY e.order
問題是,這只是返回cal_form_elements
中具有相應cal_form_answer
。但是,因爲我使用的是正確的連接,不應該也包含這樣的元素嗎不是有相應的答案嗎?或者我誤解了完全的聯結?
謝謝!
編輯:這是一個例子小提琴。 http://sqlfiddle.com/#!2/a8d99/1
您可以發佈每個表格的一小行樣本,或者甚至更好,在http://sqlfiddle.com上設置演示? –
爲什麼結果不包含元素4和5? http://sqlfiddle.com/#!2/a8d99/1 – Nathanael
啊,因爲你有'element_id = 5'的多個值,其他的'member_id'具有不同的值。所以從來沒有'element_id = 5'和'member_id IS NULL'的情況,因爲有'member_id = 30001'的情況。如果我有機會,我會盡力找出答案.. –