2012-06-18 58 views
1

我想弄清楚如何讓PHP檢查並打印2個不同的功能。MySQL:顯示總數

這兩個問題都是指稱爲「混音」的表。 當前第一個也是更重要的問題,是我想知道如何顯示「作者」下有多少個不同的值,以便編譯註冊作者總數。我不僅需要知道如何最有效地使用COUNT來返回「作者」下的UNIQUE名稱,而且需要知道如何在內聯中顯示當前編號的總行數。

第二個問題是詢問我將如何根據他們的名字出現在列表中的次數來設置排名前三的藝術家。這也會顯示在上述代碼的同一頁面上。

這裏是我當前的代碼:

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

我不知道你的問題我真的明白了一切,但我們會通過努力了一起:對

我創建了一個SQLFiddle對一些測試數據的工作:http://sqlfiddle.com/#!2/9b613/1/0
注意在author領域的指標,將保證良好的性能:)

爲了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個主題。該查詢會給你3個作者用最大號的歌曲,第一個在上面:

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

讓我知道如果這個答案是不完整的,有樂趣SQL!

EDIT1:好,只是重寫你的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中的飛行:)創建表

+0

是啊,謝謝,那是什麼我在問,如果我的描述不夠清楚,我很抱歉。 我問的另一部分是我該怎麼稱呼它? 只需$ TOTAL_AUTHORS什麼的? – Reidmere

+0

謝謝,我曾嘗試使用2個不同的mysql_queries來具有2個不同的功能,但知道應該有一個更有效的方法。 另外,我不知道你什麼時候使用「distinct as」,你仍然稱它在一個行數組聲明中...我認爲這只是由$符號調用... 一直以爲我的企圖是因爲我做了查詢/數組錯誤(我也是),非常感謝! :D – Reidmere

+0

不客氣:) –