1

我有一个名为 records 的表,其中包含以下列:recordid、艺术家、专辑、描述和封面。表中的一些专辑具有相同的艺术家。

在我的网站上,我想这样显示:

-艺术家1 专辑 1
  专辑2 - 艺术家 2 专辑
  3
- 艺术家
  3
专辑 4
  专辑
  5

如果我使用 GROUP BY,它只会显示每个艺术家一行。有没有其他方法可以在不使用关系表的情况下对它们进行分组?

因为现在我有一个表单可以通过我的站点插入和更新表格,而且我不知道如何对表格进行编码才能使其与关系表一起使用。

4

2 回答 2

2

试试这个

select artist,group_concat(album) from albums group by artist

给你

artist1  | album1,album2,album3
artist2  | albumx,albumy

您可以在 PHP 中拆分第二列,例如使用 explode(row[1])

这应该对你有所帮助

于 2012-08-08T19:07:06.070 回答
1

你可以做到这一点没有group by

<?php
$query = 'Select artist, album
    FROM records
    ORDER BY artist'
$result = mysql_query($query);

$artist = '';
while ($line = mysql_fetch_assoc($result)){
    // only show artist when it's an other artist then the previous one
    if ($line['artist'] != $artist){
        echo $line['artist'].'<br/>';
        $artist = $line['artist'];
    }
    echo $line['album'].'<br/>';
}
?>

我知道我不应该再使用 mysql_* 函数了,请选择 mysqli_* 或 PDO....

于 2012-08-08T19:15:38.940 回答