php - 使用 2 个表合并具有相同 id 的 mysql 行

标签 php mysql join merge rows

我有一个包含 2 个表的 mysql 数据库:songideen、kommentare。在“songideen”中您可以存储歌曲,在“kommentare”中您可以评论它们。两个表都通过 LEFT JOIN 链接。 如何合并行(如果一首歌有 2 条或更多条评论),以便所有评论在一行中用“,”分隔?在此示例中,我想合并第二行和第三行:

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 表中没有任何注释,将导致 kommentare.kommentarID< 的 NULL。因此,您的最终结果集将包含那些在 kommentare 表中具有相应注释的记录,以及在 kommentare 中找到的所有 NULL 条目的一个条目表。

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

相关文章:

php - PHP 中的 DOM 操作

mysql : How to add data to the existing data stored in a variable?

mysql - 多次使用 'as'

mysql - 与 InnoDB 表的 PDO 事务

sql - 如何从一个 "table"将多个表连接到同一个自动生成的整数上?

mysql - 定义用于 GROUP BY 的条件

MySQL 选择是否属于 id 的所有值都存在于另一个表中

php - 复式会计报告

javascript - 为什么我的变量没有在 php 中传递?

php - ColdFusion 相当于 PHP hash_hmac