2015-05-14 3 views
-2
$query = "SELECT TITLE FROM ACCESSLOG ORDER BY TITLE ASC"; 

$Result = db_query($query); 
     while ($DataResult = $Result->fetchAssoc()) { 
      echo '<a href='. $DataResult["path"].' >'.$DataResult["title"].'</a><br>'; 
     } 

Это дает результатДисплей: количество и процент от результата

Заголовок 1
Заголовок 1
Заголовок 1
Название 1
Название 2
Название 2
Заголовок 2
Название 3
Заглавие 3
Раздел 4 Заголовок 5
Заголовок 5
Заголовок 5
Заголовок 5
Заголовок 6
Заголовок 6
Заголовок 6
Заголовок 7
Заголовок 8
Заголовок 8
Заголовок 9
Заголовок 9
Название 9
Название 10
Название 10
Заголовок 10

мне нужно записать его в виде

Итого 26

Заголовок 1 - 4 - 0,2 (4/20)
Заголовок 2 - 3 - 0,15 (3/20)
Заголовок 3 - 2 - 0,1 (2/20)
Заголовок 4 - 1 - 0,05 (1/20)
Раздел 5 - 4 - 0,2 (4/20)
Заголовок 6 - 3 - 0,15 (3/20)
Заголовок 7 - 1 - 0,1 (1/20)
Заголовок 8 - 2 - 0,2 (4/20)
Заголовок 9 - 3 - 0,15 (3/20)
Раздел 10 - 3 - 0,15 (3/20)

Это может быть сделано с помощью SQL или PHP.

+1

А что вы пробовали до сих пор –

+0

Может кто-нибудь помочь мне сделать в PHP. – Drup

+0

* «Это может быть сделано SQL или PHP» * --- * «Может кто-нибудь помочь мне сделать в PHP» * --- вы просили его в SQL, люди дали вам ответы с использованием SQL, так что ответьте на ответы данный. В противном случае измените свой вопрос, чтобы читать как * «Это может быть сделано с помощью PHP» *. –

ответ

0

В большинстве баз данных, вы можете сделать:

select title, count(*), count(*) * 1.0/count(*) over() 
from table t 
group by title 

(. Вы также можете получить «3/20», если вы хотите, поставив колонки отдельно)

Многих пользователей PHP использовать MySQL, который не поддерживает этот синтаксис. Вместо этого:

select t.title, count(*), count(*) * 1.0/total.total 
from table t cross join 
    (select count(*) as total from table t) total 
group by t.title; 
0
SELECT a.TITLE, COUNT(a.TITLE) AS tot, COUNT(a.TITLE)/(SELECT COUNT(*) FROM ACCESSLOG b) AS Per 
FROM ACCESSLOG a 
GROUP BY a.TITLE 
ORDER BY a.TITLE ASC 
+0

Работал, как ожидалось. Изменено немного. SELECT a.TITLE, COUNT (a.TITLE) AS tot, COUNT (a.TITLE)/(SELECT COUNT (*) FROM ACCESSLOG b) AS Per FROM ACCESSLOG a GROUP BY a.TITLE ORDER BY a.TITLE ASC – Drup

+0

Как распечатать общее количество результатов, сгенерированных запросом, и общее количество отличные заголовки вне цикла While. – Drup

+0

Мэтт, код печатает индивидуальный счет. Мне нужно распечатать количество строк результатов (общее количество различных TITLES) и SUM of COUNT (a.TITLE). – Drup

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