3

我有以下查询:

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不喜欢那样。我怎样才能得到我想要的结果?谢谢。

编辑:样本表! 文件表 项目表 版本表

4

1 回答 1

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
于 2013-04-14T13:09:14.807 回答