2013-04-06 260 views
1

我HEVE兩個MySQL表MySQL的GROUP_CONCAT

參與者

id | name | lastname | 
---------------------------- 
1 | Jon | Bush | 
2 | Stephen | Eagle | 

帖子

id | parentid | Title | text 
-------------------------------------- 
1  | 1  | Title1 | Text1 
2  | 1  | title3 | text2 
3  |  1 | title4 | text4 
4  |  2 | title | ttext 

我需要出去表

id (1) | Jon | <a href='index.php?id='1'>Title1</a>, <a href='index.php?id='2'>title3</a>, <a href='index.php?id='3'>title4</a> 
id (2) | Stephen | <a href='index.php?id='4'>title<a/> 

所以我需要拿出包含ID的超鏈接標題。

我用

SELECT a.ID, a.Name, 
     GROUP_CONCAT(b.Title) TitleList 
FROM participants a 
     INNER JOIN posts b 
      ON a.ID = b.parentID 
GROUP BY a.ID, a.Name 

但在這種情況下,我可以出去只有標題行沒有ID列...

問候

+2

所以你試圖直接從查詢中檢索超鏈接?它可以完成,但最好將它放到PHP代碼中的表示邏輯中。 – 2013-04-06 11:52:55

+0

不,它可以是PHP的腳本。但我如何可以將Id行作爲變量? – Arvix 2013-04-06 11:55:14

+0

我完全放棄了'GROUP_CONCAT()',只需選擇你需要的列。獲取後,構建輸出循環中的鏈接。您只需要一個變量來測試循環中「a.ID」更改的時間。 – 2013-04-06 12:35:50

回答

2
GROUP_CONCAT(b.Title) TitleList 

應改爲:

GROUP_CONCAT(CONCAT("<a href='index.php?id=", b.id, "'", b.Title, "</a>")) TitleList 

注意,它會給你

<a href='index.php?id=1'>Title1</a> 

這是超鏈接的正確方法。

-1

我想這會做

SELECT a.ID, a.Name, GROUP_CONCAT(concat(b.Title,'-',b.id)) TitleList FROM participants a INNER JOIN posts b ON a.ID = b.parentID GROUP BY a.ID, a.Name

0
select 
    a.id, 
    a.name, 
    group_concat(b.id) ids, 
    group_concat(b.title) titles, 
    group_concat(concat("<a href='index.php?id=", b.id, "'>", b.title, "</a>")) titlelist 
from participants a 
inner join 
    posts b on b.parentid = a.id 
group by a.id,a.name 

sql fiddle

我建議你指定的鏈接到你的PHP代碼。