我有三個表。 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