我有以下查询:
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不喜欢这样。 我怎样才能得到我想要的结果?感谢。
编辑:样本表!
答案 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