我有三张桌子。TB_Main 是一个实体表。TB_BoardMembers 是一个人员表。TB_BoardMembersLINK 是一个桥接表,它通过 id 引用其他两个表,并且还有一个人在实体董事会上的开始和结束日期。这些日期通常不完整。
我被要求作为报告的一部分导出一个 CSV,其中每个实体每年有一行,其中我有一份当年的董事会成员名单,他们的职业在一个由换行符分隔的字段中。
我在结果中不需要 bml.Entity 但添加它以尝试调试。我得到了我期望 85 的一行。尝试使用和不使用 GROUP BY,结果相同的事实表明我误用了 GROUP_CONCAT。我应该如何构建它以获得他们想要的结果?
SELECT
GROUP_CONCAT(
DISTINCT CONCAT(bm.First, ' ', bm.Last,
IF (bm.Occupation != '', ' - ', ''),
bm.Occupation) SEPARATOR "\n") as Board,
bml.Entity
FROM
TB_Main arfe,
TB_BoardMembers bm,
TB_BoardMembersLINK bml
WHERE YEAR(bml.start) <= 2011
AND (YEAR(bml.end) >= 2011 OR bml.end IS NULL)
AND bml.start > 0
AND bml.Entity = arfe.ID
GROUP BY bml.Entity
ORDER BY Board