2014-11-21 62 views
0

我有多個表添加行查詢中打破

SELECT 
    p.id, 
    p.name, 
    GROUP_CONCAT(tc.comment) AS comments 
FROM 
    people AS p LEFT JOIN comments AS tc 
    ON tc.pID = p.id 
WHERE 
    p.projID = $project_id 
GROUP BY 
    p.id, 
    p.name 

當它返回評論它把他們都連成一列,當我輸出他們的網頁上就很難界定返回結果的查詢一個結束,另一個開始。有沒有辦法在構建此查詢時在每個評論之後插入某種空白行?通常我會在PHP中輸出結果,但在這種情況下,我不知道中斷應該在哪裏。

+2

'GROUP_CONCAT(tc.comment SEPARATOR「\ n」)AS comments'是否有效? – Sam 2014-11-21 19:12:26

+0

'GROUP_CONCAT'應該用逗號分隔行。所以,在PHP中,您可以嘗試用換行符替換逗號。 – 2014-11-21 19:12:55

+0

是不是group_concat轉義分隔符裏面有自己的值? – 2014-11-21 19:21:53

回答

3

的simpy添加一個分隔符的tc.comment後是這樣的:

SELECT 
    p.id, 
    p.name, 
    GROUP_CONCAT(tc.comment, " | ") AS comments 
FROM 
    people AS p LEFT JOIN comments AS tc 
    ON tc.pID = p.id 
WHERE 
    p.projID = $project_id 
GROUP BY 
    p.id, 
    p.name 

這將會把一個|在每個tc.comment之間,但會留下一個逗號作爲分隔符。使用

GROUP_CONCAT(tc.comment SEPARATOR " | ") 

如果您要替換逗號而不是添加到元素。

如果要輸出到網頁,您可以交替(對於特定點更多)爲新行添加「\ n」或「< br/>」。

+0

實際上,現在我要測試這個,因爲GROUP_CONCAT在輸出字段之間放置了一個逗號,所以您可能需要首先執行分隔符。 – 2014-11-21 19:19:54

+0

我剛纔也注意到了......謝謝。 – santa 2014-11-21 19:30:37

+0

有什麼辦法擺脫這些逗號?我想我會添加一些獨特的deliniator,然後使用PHP將其替換爲中斷。 – santa 2014-11-21 19:34:51