Я рассмотрел различные вопросы о том, как делать подсчет и рейтинг. У меня есть поле в моей базе данных, называемое vDestination, и я хочу получить подсчет и ранг каждого адресата. Я использую Codeigniter. У меня есть следующее:
$sql = ("SET @curRank := 0;\r\n
SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");
Это выглядит как синтаксис SQL, но я продолжаю получать ошибки базы данных. Кто-нибудь, пожалуйста, сообщите мне, что случилось с этим вопросом?
Ошибка базы данных Произошла
Номер ошибки: 1064У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'SELECT vDestination, COUNT (*) AS count, @curRank: = @curRank + 1 AS rank FROM tb' в строке 3
SET @curRank := 0; SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination
Это ошибка, которую я получаю.
Попробуйте вот так:
$this->db->query("SET @curRank := 0");
$this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip ORDER BY vDestination");
Рабочее решение выглядит следующим образом:
function getMostPopularDestinations()
{
$this->db->query("SET @curRank := 0");
$query = $this->db->query("SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank FROM tbl_user_trip GROUP BY vDestination ORDER BY vDestination");
return $query->result_array();
}
Так, как предположил @tyro, но с GROUP BY.