MySQL:显示总数

时间:2012-06-18 03:33:28

标签: mysql select count unique

我正在试图找出如何进行PHP检查和打印2种不同的功能。

这两个问题都是指“混音”这个表。 第一个也是最重要的问题, 是我想知道如何显示“作者”下有多少个不同的值,以便编制已注册的总作者数量。我不仅需要知道如何在“作者”下返回UNIQUE名称时最有效地使用COUNT,还要知道如何使用当前编号的行总数内联显示它。

第二个问题是询问我如何根据名单在列表中出现的次数来设置前三名艺术家。这也将显示在与上述代码相同的页面上。

这是我目前的代码:

require 'remix/archive/connect.php';
mysql_select_db($remix);
$recentsong = mysql_query("SELECT ID,song,author,filename FROM remix ORDER by ID desc limit 1;");
$row = mysql_fetch_array($recentsong);

echo'
<TABLE BORDER=1><TR><TD WIDTH=500>

Currently '.$row['ID'].' Remixes by **(want total artists here)** artists.<BR>

Most recent song: <A HREF=remix/archive/'.$row['filename'].'>'.$row['song'].'</A> by <FONT COLOR=white>'.$row['author'].'</FONT>

所以你可以看到,我现在设置它来显示最近的歌曲(不是最有效的方式),但是想要其他的东西,比如至少是最高的贡献者,但不知道如果我能够将它全部放在一个php块中,打破它,或者能够在一个采石场通话中使用正确的代码完成所有操作。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我不确定我是否真的理解了你问题中的所有内容,但我们将共同努力:p

我已经创建了一个SQLFiddle来处理一些测试数据:http://sqlfiddle.com/#!2/9b613/1/0 注意author字段上的INDEX,它将确保良好的性能:)

按顺序to know how to show how many DIFFERENT values are under "author",您可以使用:

SELECT COUNT(DISTINCT author) as TOTAL_AUTHORS
FROM remix;

为了了解the total number of rows, which are currently numbered,您可以使用:

SELECT COUNT(*) as TOTAL_SONGS
FROM remix;

您可以在一个查询中合并两者:

SELECT
    COUNT(DISTINCT author) as TOTAL_AUTHORS,
    COUNT(*) as TOTAL_SONGS
FROM remix;

现在进入前三名。此查询将为您提供歌曲数量最多的3位作者,首先是一首:

SELECT
    author,
    COUNT(*) as AUTHOR_SONGS
FROM remix
GROUP BY author
ORDER BY AUTHOR_SONGS DESC
LIMIT 3;

如果这个答案不完整并且对SQL感兴趣,请告诉我!

编辑1:好吧,只需重写您的PHP代码:

(...)
$recentsong = mysql_query("SELECT COUNT(DISTINCT author) as TOTAL_AUTHORS, COUNT(*) as TOTAL_SONGS FROM remix;");
$row = mysql_fetch_array($recentsong);
(...)
Currently '.$row['TOTAL_SONGS'].' Remixes by '.$row['TOTAL_AUTHORS'].' artists.<BR>
(...)

对于top3部分,使用另一个mysql_query并动态创建表:)