我有三个表。 TB_Main是一个实体表。 TB_BoardMembers是人物表。 TB_BoardMembersLINK是一个桥接表,它通过ID引用其他两个表,并且具有一个Person在一个实体的板上时的开始和结束日期。这些日期通常不完整。使用GROUP_CONCAT
我被要求将一个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
恕我直言,这个问题是不是'GROUP_CONCAT'而是不当连接。 – peterm