2016-12-01 77 views
0

這裏是我的2 MySQL表:如何在Sql查詢中使用GROUP BY Clasuse以顯示具有多個值的唯一數據?

記錄:

lg_tbl_id  lg_id   ch_id lg_name created 
============================================================ 
29   1583ecb93dd121 8  D4L08841 1480510355 
30   1583ecb93dd121 9  D4L08841 1480510355 
31   1583eccf794e0e 14  D4L08842 1480510711 

通道

ch_id ch_name ch_for  created 
============================================ 
8  CH01  Watter Level 1480247466 
9  CH02  Watter Level 1480247474 
10  CH31  Watter Level 1480247480 
11  CH32  Watter Level 1480247485 
12  CHO5  Watter Level 1480506405 
13  CHO6  Watter Level 1480506409 
14  CHO7  Watter Level 1480506413 

使用波紋管的SQL查詢它的顯示如下數據:

$getLogger = mysqli_query($conn, "SELECT logger.lg_name, logger.lg_id, logger.created, channel.ch_name 
FROM logger 
LEFT JOIN channel ON channel.ch_id = logger.ch_id 
ORDER BY logger.lg_tbl_id DESC"); 

while ($fetchLogger = mysqli_fetch_array($getLogger)) { 

     $lg_id  = $fetchLogger['lg_id']; 
     $lg_name = htmlspecialchars($fetchLogger['lg_name']); 
     $ch_name = htmlspecialchars($fetchLogger['ch_name']); 
     $created = $fetchLogger['created']; 
     $created = date("Y-m-d h:m:s A", $created); 

     // table data showing here.... 
} 

數據回傳:

id    Logger name  Channel Name created 
1583eccf794e0e D4L08842  CHO7   2016-11-30 01:11:31 PM 
1583ecb93dd121 D4L08841  CH02   2016-11-30 01:11:35 PM 
1583ecb93dd121 D4L08841  CH01   2016-11-30 01:11:35 PM 

現在你看到IDLogger名稱列包含重複IDLogger名稱。對於e.g 1583ecb93dd121D4L08841與不同通道名稱

顯示兩次我想展示獨特IDLogger名稱所有通道名稱一行。像波紋管:

1583ecb93dd121 D4L08841  CH01, CH02  2016-11-30 01:11:35 PM 

回答

1

您需要GROUP_CONCAT

SELECT logger.lg_name, logger.lg_id, logger.created, 
GROUP_CONCAT(channel.ch_name) as ch_name 
FROM logger 
LEFT JOIN channel ON channel.ch_id = logger.ch_id 
GROUP BY logger.lg_name, logger.lg_id, logger.created 
ORDER BY logger.lg_tbl_id DESC 
+0

讓我來試試這個。 –

+0

哦,我現在明白了。它的工作,謝謝@Esty –