2

我正在制作专辑列表,数据库中的信息是歌曲名称、艺术家名称、专辑名称和专辑插图的 URL。

我处于完全的死胡同,因为我从未成功地尝试过以下操作:

如果同一张专辑有多首歌曲,只需使用其中一首专辑名称,然后继续下一张。

我打算做的是在一张桌子上填满艺术品、专辑名称和艺术家。然后它会显示下一张专辑,依此类推。这是一个例子:

<td><center><img width="150" src="http://ecx.images-amazon.com/images/I/51Ey1zeerzL.jpg"><br><strong>The Wall</strong><br>Pink Floyd</center></font></a></td>

<td><center><img width="150" src="http://stcmjfpp1312.files.wordpress.com/2012/09/led-zeppelin-mothership.jpg"><br><strong>Mothership</strong><br>Led Zeppelin</center></td>

<td><center><img width="150" src="https://s3.amazonaws.com/NRNArt/Slightly-Stoopid--Top-Of-The-World.jpg"><br><strong>Top of the World</strong><br>Slightly Stoopid</center></td>

我的 MySQL 表:

    mysql> DESCRIBE musicinfo;
+----------+---------------+------+-----+---------+----------------+
| Field    | Type          | Null | Key | Default | Extra          |
+----------+---------------+------+-----+---------+----------------+
| auto     | int(11)       | NO   | PRI | NULL    | auto_increment | 
| file     | varchar(150)  | YES  |     | NULL    |                | 
| artist   | varchar(150)  | YES  |     | NULL    |                | 
| album    | varchar(150)  | YES  |     | NULL    |                | 
| song     | varchar(150)  | YES  |     | NULL    |                | 
| albumurl | varchar(500)  | YES  |     | NULL    |                | 
| username | varchar(150)  | YES  |     | NULL    |                | 
| filesize | varchar(9999) | YES  |     | NULL    |                | 
+----------+---------------+------+-----+---------+----------------+

所以我不希望出现同一张专辑的多个副本。希望有人理解并至少能给我一些提示。

4

3 回答 3

2

MYSQL 内部属性的简单破解GROUP BY

SELECT * FROM 歌曲 GROUP BY album_title

这将生成具有不同album_title 的歌曲表,并且显示对应于album_title 的歌曲取决于MYSQL 表索引(B+Tree)等。

属性GROUP BY- 如果有多个 group by 副本,它将它们组合成一个副本,并允许您也处理聚合值

SELECT *,count(*) as numsongs FROM song GROUP BY album_title

这将为您提供每张专辑中的歌曲数量

于 2013-10-30T03:27:06.220 回答
1

我没有专门使用 MySQL 的经验,但试试这个:

SELECT DISTINCT
    albums.albumurl
    ,albums.album
    ,(SELECT song FROM musicinfo WHERE album = albums.album ORDER BY song ASC LIMIT 0,1) AS firstsong
FROM musicinfo AS albums

(SELECT song FROM musicinfo WHERE album = albums.album ORDER BY song ASC LIMIT 0,1)是一个子查询,它将按字母顺序选择专辑中的第一首歌曲。

我真的希望 MySQL 允许在表名上使用别名。

于 2013-10-30T03:15:55.083 回答
-1

如果您只想在每张专辑中显示一首歌曲,则必须更改在页面加载时执行的 SQL 查询。

您可以使用例如 DISTINCT 语句:http ://www.w3schools.com/sql/sql_distinct.asp

于 2013-10-30T02:55:50.543 回答