Php 按名称分组,但保留与名称关联的所有标记

Php 按名称分组,但保留与名称关联的所有标记,php,mysql,joomla,group-by,duplicate-removal,Php,Mysql,Joomla,Group By,Duplicate Removal,我想知道是否有人遇到以下情况: SQL查询: SELECT s.ID , s.name , s.artist, m.tag_ID, t.name, s.*, m.*, t.* FROM lms_song s LEFT JOIN lms_map m ON s.ID = m.ID LEFT JOIN lms_tag t ON m.tag_i

我想知道是否有人遇到以下情况:

SQL查询:

SELECT s.ID , s.name , s.artist, m.tag_ID, t.name, s.*, m.*, t.*
                FROM lms_song s
                LEFT JOIN lms_map m
                ON s.ID = m.ID
                LEFT JOIN lms_tag t 
                ON m.tag_id = t.ID
                WHERE s.created_by='.$userId.'                                  
                ORDER BY '.$Field.' '.$Direction;
PHP:


它当前显示用户列出的所有“歌曲”

虽然它确实列出了与用户关联的所有歌曲,但它有多个重复的songname,因为每个歌曲名称都有一个与之关联的标记

我试图简单地为“歌曲名”显示“groupbys.name”

但是,这将其限制为一个t.name(标记)

我想显示每个艺术家(s.artist)的歌曲名称(s.name)的副本,同时显示与其关联的所有标记(t.name)

感谢您的帮助


谢谢

我想您正在寻找
分组人()
分组人

SELECT s.ID , s.name , s.artist,
       group_concat(m.tag_ID) as tagids,
       group_concat(t.name) as tagnames
FROM lms_song s LEFT JOIN
     lms_map m
     ON s.ID = m.ID LEFT JOIN 
     lms_tag t 
     ON m.tag_id = t.ID
WHERE s.created_by='.$userId.'
GROUP BY s.ID, s.name , s.artist                                 
ORDER BY '.$Field.' '.$Direction;

试着使用小组讨论谢谢!组_concat是完美的解决方案。一旦可以,我会勾选这个作为答案(上面说我必须等10分钟…)
SELECT s.ID , s.name , s.artist,
       group_concat(m.tag_ID) as tagids,
       group_concat(t.name) as tagnames
FROM lms_song s LEFT JOIN
     lms_map m
     ON s.ID = m.ID LEFT JOIN 
     lms_tag t 
     ON m.tag_id = t.ID
WHERE s.created_by='.$userId.'
GROUP BY s.ID, s.name , s.artist                                 
ORDER BY '.$Field.' '.$Direction;