2012-06-18 3 views
1

Я пытаюсь выяснить, как проверить PHP и распечатать две разные функции.MySQL: отображение итогов

Оба эти вопроса относятся к таблице, называемой «ремикс». Первая, и более важная проблема в минуту, Я хотел бы знать, как показать, сколько РАЗЛИЧНЫХ значений находится под «автором», чтобы собрать количество зарегистрированных авторов. Мне нужно знать не только, как наиболее эффективно использовать COUNT для возвращения UNIQUE-имен под «author», но и как показать его в строке с общим количеством строк, которые в настоящее время пронумерованы.

Второй вопрос: спросите, как я смогу создать топ-3 художников, исходя из того, сколько раз их имя встречается в списке. Это также будет отображаться на той же странице, что и указанный выше код.

Вот мой текущий код:

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> 
(...) 

Для топ3 части, используйте другой mysql_query и создать таблицу на лету :)

+0

Да, спасибо, вот что Я просил, и извините, если я не был достаточно ясен в своем описании. Другая часть того, о чем я прошу, - как я могу это назвать? Просто $ TOTAL_AUTHORS или еще что-то? – Reidmere

+0

Спасибо, я попытался использовать 2 разных mysql_queries, чтобы иметь 2 разных функции, но знал, что должен быть более эффективный способ. Кроме того, я не знал, когда вы используете «отличные как», вы все еще вызываете его в выражении массива строк ... Я предположил, что это был просто вызов по знаку $ ... Думал, что мои попытки состоят в том, что я сделал неверный запрос/массив (который я тоже был), большое спасибо! : D – Reidmere

+0

Добро пожаловать :) –

Смежные вопросы