Здравствуйте. Помогите, пожалуйста в следующем: Есть таблица ".USER_RATING_TABLE." и ее структура: Нужно сделать рейтинг по сумме rating_value, каждого other_user_id Посчитать сумму всех rating_value, могу без проблем... а по отдельности не могу...
[sql] SELECT `other_user_id`, SUM(`rating_value`) AS `sum` FROM `USER_RATING_TABLE` GROUP BY `other_user_id` [/sql]
Спасибо большое, работает! Теперь есть еще один вопросик... поле other_user_id соответствует значению, user_id в таблице USERS TABLE. То есть, реально показать по ID, user_name из таблицы USERS TABLE?
реально =) [sql] SELECT `rating.other_user_id`, SUM(`rating.rating_value`) AS `sum`, `users.user_name` AS `name` FROM `USER_RATING_TABLE` AS `rating`, - это для краткости =) `USERS_TABLE` AS `users` WHERE `rating.other_user_id` = `users.user_id` GROUP BY `other_user_id`[/sql]Вроде так
DB Error: Bad SQL Query: SELECT `other_user_id`, SUM(`rating_value`) AS `vot_sum`, `user_name` AS `name` FROM 5images_users_rating AS `rating`, 5images_users AS `users` WHERE `other_user_id` = `user_id` GROUP BY `other_user_id` Column 'user_id' in where clause is ambiguous
[sql]SELECT `other_user_id`, SUM(`rating_value`) AS `vot_sum`, `user_name` AS `name` FROM 5images_users_rating AS `rating`, 5images_users AS `users` WHERE `rating.other_user_id` = `users.user_id` GROUP BY `other_user_id`[/sql] Так-как у Вас дублируются названия столбцов "user_id"
PHP: $sql = "SELECT `other_user_id`, SUM(`rating_value`) AS `vot_sum`, `user_name` AS `name` FROM ".USERS_RATING_TABLE." AS `rating`, ".USERS_TABLE." AS `users` WHERE `other_user_id` = `user_id` GROUP BY `other_user_id`"; Запрос прошел... все окей... Только не пойму как теперь первым показать с наибольшей суммой rating_value и далее вниз
[sql]$sql = "SELECT `other_user_id`, SUM(`rating_value`) AS `vot_sum`, `user_name` AS `name` FROM ".USERS_RATING_TABLE." AS `rating`, ".USERS_TABLE." AS `users` WHERE `other_user_id` = `user_id` ORDER BY `vot_sum` DESC GROUP BY `other_user_id`";[/sql] (а дублировались названия столбцов, в обоих таблицах есть столбец "user_id" и MySQL не мог выбрать, какой использовать)
MrAndrew ну так нафик вы это сделали? не обратили внимания на AS и наличие названия таблицы перед полем? вот обратите =) Такой синтаксис специально придумали, чтобы избежать конфликтов с одинаковыми названиями разных полей.
Появился один вопрос... Как сделать нумерацию строк теперь? Есть сл. вид топа: Все это выводится так: PHP: $most_rated_user = ""; $sql = "SELECT `other_user_id`, SUM(`rating_value`) AS `vot_sum`, `user_name` AS `name` FROM ".USERS_RATING_TABLE." AS `rating`, ".USERS_TABLE." AS `users` WHERE `other_user_id` = `user_id` GROUP BY `other_user_id` ORDER BY `vot_sum` DESC LIMIT 10"; $result = $site_db->query($sql); $sum = (isset($row['vot_sum'])) ? $row['vot_sum'] : 0; while ($row = $site_db->fetch_array($result)) { $most_rated_user .= "<tr>"; $most_rated_user .= "<td width=\"180\" align=\"left\">"; $most_rated_user .= '<a href ="'.ROOT_PATH.'search.php?search_user='.$row['name'].'"><b>'.$row['name'].'</b></a>'; $most_rated_user .= "</td>"; $most_rated_user .= "<td width=\"70\" align=\"center\">"; $most_rated_user .= '<span class="smalltext"><b>'.$row['vot_sum'].'</b></span>'; $most_rated_user .= "</td>"; $most_rated_user .= "</tr>"; } $site_template->register_vars(array( "most_rated_user" => $most_rated_user, )); unset($most_rated_user); Слева от имен пользователей, нужно сделать нумерацию, т.е. 1,2,3,4...n
появился еще вопрос: Код: PHP: $most_viewed_airline .= ""; $most_viewed_airline .= time() - 60 * 60 * 24 * 1; $sql = "SELECT i.image_airline as airline, SUM(i.image_hits) AS hit_sum FROM ".IMAGES_TABLE." i WHERE i.image_date >= ".$most_viewed_airline." GROUP BY airline ORDER BY hit_sum DESC LIMIT 5"; $result = $site_db->query($sql); $i=0; $sum = (isset($row['hit_sum'])) ? $row['hit_sum'] : 0; while ($row = $site_db->fetch_array($result)) { Дает сл. результат: Вопрос в том, как убрать выделенные желтым цветом цифры, и почему они выводятся вообще?