我有一个mysql数据库,有两个表:songideen,kommentare。在“songiden”你可以储存歌曲,在“kommentare”你可以评论它们。两个表都通过左连接链接。
如何合并行(如果一首歌有两个或多个注释),以便所有注释在一行内用“,”分隔?在本例中,我想合并第二行和第三行:

Name   Arbeitstitel    Datum      mp3    ID  Kommentare    KommentarID
Lukas   Titeltest    2016-06-06  Link     1   comment      1
Jannik  Titeltest2   2016-07-06  Link2    2   comment2     2
Jannik  Titeltest2   2016-07-06  Link2    2   comment3     2
Andi    Titeltest3   2016-07-20  Link3    3   comment4     3

我经常这样试,但没用:
 $sql = "SELECT songideen.Name, songideen.Arbeitstitel, songideen.Datum, songideen.mp3, songideen.ID, GROUP_CONCAT(kommentare.Kommentar SEPARATOR ',') AS KommentarIDs, kommentare.KommentarID
                FROM songideen
                LEFT JOIN kommentare
                ON songideen.ID=kommentare.KommentarID
                GROUP BY kommentare.KommentarID";

最佳答案

你需要按songideen.ID分组。因为songideen表中有记录,而kommentare表中没有任何注释。

SELECT
    songideen.Name,
    songideen.Arbeitstitel,
    songideen.Datum,
    songideen.mp3,
    songideen.ID,
    GROUP_CONCAT(kommentare.Kommentar SEPARATOR ',') AS KommentarIDs,
    kommentare.KommentarID
FROM songideen
LEFT JOIN kommentare ON songideen.ID = kommentare.KommentarID
GROUP BY songideen.ID ;

注:
在您的案例中,您将结果集分组为kommentare.kommentarID。对于songideen表中的记录,如果在kommentare表中没有任何注释,则会导致NULL的值。因此,您的最终结果集将包含那些在kommentare.kommentarID表中有相应注释的记录,以及在kommentare表中找到的所有NULL条目的一个条目。

关于php - 使用2个表合并具有相同id的mysql行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38540174/

10-09 17:08