Есть 2 таблицы. Первая: Id Autor Вторая: Id Id_autor Text View (просмотры данного текста) Мне необходимо вывести список авторов и рядом в скобках подсчитать кол-во просмотров всех строк этого автора. То есть нужно сложить данные поля View где одинаковые id_autor и вывести их в столбик: Петя (5) Вася (8) и т.д.
SELECT *, Sum(b.view) FROM table1 a, table2 b WHERE (a.id = b.id_autor) GROUP BY b.id_autor Вроде как то так...
Сделал так: PHP: <?php $top_autor = mysql_query ("SELECT *, Sum(a.view) FROM text a, autor b WHERE (a.id = b.id_autor) GROUP BY b.id_autor"); while ($top_autor1 = mysql_fetch_array ($top_autor)) { echo $top_autor1['view']; } ?> Выдает ошибку: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\www\php\top_ispoln.php on line 7
PHP: <?php $top_autor = mysql_query ("SELECT a.*, Sum(a.view) FROM text a, autor b WHERE (b.id = a.id_autor) GROUP BY a.id_autor"); while ($top_autor1 = mysql_fetch_array ($top_autor)) { echo $top_autor1['view']; } ?> Выводит нули вот так: 0000000000000000000000000000000000000000000000
Он неправильно как-то считает. Посмотрел по БД у одного автора допустим в одном посте 7 просмотров, в другом посте этого же автора 3 просмотра итого по полю view=10, а у другого только 4 и почему-то у которого 4 стоит выше чем у которо 10. Сортировку сделал так: PHP: <?php $top_autor = mysql_query ("SELECT a.*, Sum(a.view) FROM text a, autor b WHERE (b.id = a.id_autor) GROUP BY a.id_autor ORDER BY a.view desc limit 20");?>
Дак ORDER BY a.view DESC - вот и сортировка в обратном порядке. Замени DESC на ASC и будет тебе счастье
Неа!! Мне нужно чтоб так выводил: Иванов (10) Петров (5) и т.д. неправильно проходит подсчет сумм чисел поля view определенного автора.
Есть в таблице данные: Иванов 8 Иванов 2 Петров 6 Сидоров 3 Сидоров 1 ________________ Результат вывода нужен: Иванов 10 Петров 6 Сидоров 4
А ещё можно использовать алиасы при выборке. Например: [sql]SELECT LAST_INSERT_ID(), COUNT(*), (2+2)[/sql] заменяем на [sql]SELECT LAST_INSERT_ID() AS `last`, COUNT(*) AS `total`, (2+2) AS `sum`[/sql] Для сравнения: Код (Text): Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 447 Server version: 5.1.45-community-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SELECT LAST_INSERT_ID(), COUNT(*), (2+2); +------------------+----------+-------+ | LAST_INSERT_ID() | COUNT(*) | (2+2) | +------------------+----------+-------+ | 0 | 1 | 4 | +------------------+----------+-------+ 1 row in set (0.00 sec) mysql> SELECT LAST_INSERT_ID() AS `last`, COUNT(*) AS `total`, (2+2) AS `sum` -> ; +------+-------+-----+ | last | total | sum | +------+-------+-----+ | 0 | 1 | 4 | +------+-------+-----+ 1 row in set (0.00 sec) mysql>