所以......我的右连接不起作用。这听起来很模糊,而且所有的事情都考虑到了,它可能实际上是有效的。但是,对于我的生活,我无法弄清楚发生了什么事情!为了简单起见,这是我的查询。我明白它有点本地化,但它非常简单。正确加入不加入?
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'的情况。如果我有机会,我会尽力找出答案.. –