Ранговый запрос не работает

0

Я рассмотрел различные вопросы о том, как делать подсчет и рейтинг. У меня есть поле в моей базе данных, называемое 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

Это ошибка, которую я получаю.

Теги:
codeigniter

2 ответа

2

Попробуйте вот так:

 $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");
  • 0
    Я добавил GROUP BY, и да, это сработало.
  • 0
    @ Майкл Нарес пропустил эту часть. Я сосредоточился на решении проблемы.
1

Рабочее решение выглядит следующим образом:

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню