我有三个表,我尝试查询这三个表以获得我想要的结果(没有组合行),但是在结果中行被组合。
这是表格:
monitoring table
id | code
12 | M-12
monitoring_question_log table
id | monitoring_id | monitoring_question_id | monitoring_question_choice_id | textual_answer
11 12 1 1 (NULL)
12 12 2 4 (NULL)
13 12 3 6 (NULL)
14 12 4 10 (NULL)
15 12 5 14 (NULL)
16 12 6 15 (NULL)
17 12 7 (NULL) N/A
monitoring_checklist_log table
id | monitoring_id | monitoring_checklist_id | answer
23 12 1 checked
24 12 2 unchecked
25 12 3 checked
26 12 4 checked
这是我使用的查询:
SELECT
m.id,
m.code,
mql.monitoring_question_choice_id,
mql.textual_answer,
mcl.monitoring_checklist_id,
mcl.answer
FROM monitoring m
LEFT JOIN monitoring_question_log mql ON mql.monitoring_id = m.id
LEFT JOIN monitoring_checklist_log mcl ON mcl.monitoring_id = m.id
WHERE m.id = 12
以上查询的结果是:
id code monitoring_question_choice_id textual_answer monitoring_checklist_id answer
12 M-12 1 (NULL) 1 checked
12 M-12 1 (NULL) 2 unchecked
12 M-12 1 (NULL) 3 checked
12 M-12 1 (NULL) 4 checked
12 M-12 4 (NULL) 1 checked
12 M-12 4 (NULL) 2 unchecked
12 M-12 4 (NULL) 3 checked
12 M-12 4 (NULL) 4 checked
12 M-12 6 (NULL) 1 checked
12 M-12 6 (NULL) 2 unchecked
12 M-12 6 (NULL) 3 checked
12 M-12 6 (NULL) 4 checked
12 M-12 10 (NULL) 1 checked
12 M-12 10 (NULL) 2 unchecked
12 M-12 10 (NULL) 3 checked
12 M-12 10 (NULL) 4 checked
12 M-12 14 (NULL) 1 checked
12 M-12 14 (NULL) 2 unchecked
12 M-12 14 (NULL) 3 checked
12 M-12 14 (NULL) 4 checked
12 M-12 15 (NULL) 1 checked
12 M-12 15 (NULL) 2 unchecked
12 M-12 15 (NULL) 3 checked
12 M-12 15 (NULL) 4 checked
12 M-12 (NULL) N/A 1 checked
12 M-12 (NULL) N/A 2 unchecked
12 M-12 (NULL) N/A 3 checked
12 M-12 (NULL) N/A 4 checked
更新:
预期结果:
id code monitoring_question_choice_id textual_answer monitoring_checklist_id answer
12 M-12 1 (NULL) 1 checked
12 M-12 4 (NULL) 2 unchecked
12 M-12 6 (NULL) 3 checked
12 M-12 10 (NULL) 4 checked
12 M-12 14 (NULL)
12 M-12 15 (NULL)
12 M-12 (NULL) N/A
如有任何帮助,我们将不胜感激。
最佳答案
由于您使用的是左连接,因此每个 monitoring_checklist_id
与 monitoring_question_choice_id
的组合(无重复)
如果您不想要组合,则必须以某种方式确定哪个 monitoring_question_choice_id
应该与 monitoring_checklist_id
一起使用(我认为这实际上不可能)
另一种方法是用编程语言处理它,方法是循环所有行并进行不重复的组合
关于MySQL:LEFT JOIN 返回组合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239806/