在VARCHAR字段中按版本号分组?

时间:2016-01-26 07:36:14

标签: mysql group-by grouping

在我的网站上,我有一个包含下载统计信息的管理员页面。我想知道,哪些文件最常下载。但是,每次我发布新版本(例如1.3.0 - > 1.3.1)时,我都会在下表中看到一条新记录。

有没有办法使用MySQL将一个项目的所有版本组合在一起?

版本以不同方式表示:

  • 可以是1.001.0.0.zip
  • 背后有.exeSomeWord.zipVARCHAR(例如“来源”或“二进制”)

数据库表包含[Path] is "downloads/coding/electronics/Floppy Drive Music 3.1.zip" 字段,其中包含下载的完整路径。例如

alignment-baseline

更新

注释#1建议将无版本名称存储在数据库中。我在此也接受任何解释,解释如何使用PHP从文件名中正确删除版本。

如需进一步了解和披露,请查看截图:

downloads

1 个答案:

答案 0 :(得分:0)

由于不太可能使用MySQL或者完全不同的方式,我遵循了问题评论#1的建议:

我使用PHP剥离版本并使用MySQL简化字符串分组。

$simpleFileName = substr($row['Path'], strrpos($row['Path'], '/') + 1); // Strip path, get file name only
if (preg_match('/\d+(?:\.\d+)+/', $simpleFileName, $matches))
{
    // Replace version with "[VERSION]", which is processed in the front end.
    $simpleFileName = str_replace($matches[0], '[VERSION]', $simpleFileName);
}