group_concat中的mysql查询组

时间:2013-04-14 12:53:31

标签: mysql sql

我有以下查询:

SELECT files.file_name, files.locked, projects.project_name, 
group_concat( versions.version, versions.language SEPARATOR ' & ')
FROM    files
JOIN `projects` ON (files.project_id = projects.project_id) 
JOIN `versions` ON (files.file_id = versions.file_id)
WHERE   files.file_id = '1'
ORDER BY projects.project_name ASC

这给了我这张表:

filename - 1 - projectname - 0.1EN & 0.2FR & 0.3DE & 0.1IT

我想要的是输出类似的查询:

filename - 1 - projectname - 0.1-EN,IT & 0.2-FR & 0.3-DE

所以我试过这个:

group_concat( versions.version, versions.language GROUP BY versions.version SEPARATOR ' & ')

但是mysql不喜欢这样。 我怎样才能得到我想要的结果?感谢。

编辑:样本表! files table projects table versions table

1 个答案:

答案 0 :(得分:2)

尝试一下,

SELECT  a.file_name,
        a.locked,
        b.project_name,
        GROUP_CONCAT(c.version, c.language SEPARATOR ' & ')
FROM    files a
        INNER JOIN projects b
            ON a.project_id = b.project_ID
        INNER JOIN
        (
            SELECT  file_ID, `version`, GROUP_CONCAT(language) language
            FROM    versions
            GROUP   BY file_ID, `version`
        ) c ON  a.file_ID = c.file_ID
WHERE   a.file_ID = 1
GROUP   BY  a.file_name,
            a.locked,
            b.project_name