试图从四个创建一个表

时间:2014-10-17 16:32:17

标签: join union junction

我一直试图创建一个查询,该查询从至少三个具有多对多关系的不同表中提取结果。

我希望最终找到一个列出案例,结果和投诉的表格 所有案件可能没有,一个或多个结果,同样的关系适用于投诉。我希望能够列出一次案例,然后列出后续列,列出与该案例相关的所有结果和投诉。 我已尝试GROUP_CONCAT将结果放在一列而不是重复这些案例,但当我使用UNION来组合结果和投诉时,一列标题会覆盖另一列。

感谢任何帮助,这里是小提琴http://sqlfiddle.com/#!2/d111e/2/0

的链接

1 个答案:

答案 0 :(得分:0)

我建议你从这个查询结构开始:

SELECT
        c.caseID, c.caseTitle, c.caseSynopsis /* if more columns ... add to group by also */
      , group_concat(co.concern)
      , group_concat(re.resultText)
FROM caseSummaries AS c 

LEFT JOIN JNCT_CONCERNS_CASESUMMARY AS JCC ON c.caseID = JCC.caseSummary_FK
LEFT JOIN CONCERNS AS co ON JCC.concerns_FK = co.concernsID

LEFT JOIN JNCT_RESULT_CASESUMMARY AS JRC ON c.caseID = JRC.caseSummary_FK
LEFT JOIN RESULTS AS re ON JRC.result_FK = re.result_ID

GROUP BY
        c.caseID, c.caseTitle, c.caseSynopsis /* add more ... here also */
;

将表格caseSummaries视为最重要的,然后是其他所有内容"挂掉"那。

请注意,虽然MySQL会允许它,但您应该将包含在select子句中的每个非聚合列也放入group by子句中。

另见:http://sqlfiddle.com/#!2/2d1a79/7