使用多个联结表运行查询

时间:2014-10-12 17:22:38

标签: mysql

我有一个列出案例研究的表格和另一个列出结果的表格。案例研究可以有多个结果,因此我创建了一个联结表。 我想运行一个SQL,它将显示案例一次,到目前为止每个结果都有

SELECT caseSummaries.caseTitle, caseSummaries.caseSynopsis, RESULTS.resultText
FROM JNCT_RESULT_CASESUMMARY
JOIN caseSummaries ON JNCT_RESULT_CASESUMMARY.caseSummary_FK = caseSummaries.caseID
JOIN RESULTS ON JNCT_RESULT_CASESUMMARY.result_FK = RESULTS.result_ID
GROUP BY caseSummaries.caseID;

这给了我一行,只有三行的第一个结果。如何在同一行显示其他人?我是否必须创建临时表以及如何完成?到目前为止,我已经使用了LEFT JOIN,但我仍然得到一行。如果我不使用GROUP BY,我会将caseSummaries.caseTitle重复三次并将每个列出的结果重复一次。我希望获得一次案例摘要,每个结果都会出现在一个新列中。 谢谢,
ç

从问题中假设我有两张表

有三个领域的案例研究:

  • ID
  • 标题
  • 概要

和另一个包含结果的表格: [子弹]

  • 道歉
  • 补偿
  • 政策变更

有很多关系,我的SQL需要显示每个案例研究的结果,如下所示:

案例1 |标题|剧情简介|道歉|补偿|政策变更
案例2 |标题|剧情简介|道歉|空|政策变更

假设案例2只有2个结果。 目前没有 GROUP BY SELECT DISTINCT 我得

案例1 |标题|剧情简介|道歉
案例1 |标题|简介|赔偿
案例1 |标题|概要|政策变更
案例2 |标题|剧情简介|道歉
案例2 |标题|概要|政策变更

1 个答案:

答案 0 :(得分:0)

group_concat功能可以满足您的需求:

SELECT   caseSummaries.caseTitle, 
         caseSummaries.caseSynopsis, 
         GROUP_CONCAT(RESULTS.resultText)
FROM     JNCT_RESULT_CASESUMMARY
JOIN     caseSummaries ON JNCT_RESULT_CASESUMMARY.caseSummary_FK = caseSummaries.caseID
JOIN     RESULTS ON JNCT_RESULT_CASESUMMARY.result_FK = RESULTS.result_ID
GROUP BY caseSummaries.caseTitle, caseSummaries.caseSynopsis;