2017-12-24 17 views
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構文でエラーが発生しているが、ライン3

SET @curRank := 0; 
SELECT vDestination, COUNT(*) AS count, @curRank := @curRank + 1 AS rank 
FROM tbl_user_trip ORDER BY vDestination 
で: '結核ランクAS = @curRank + 1カウント、@curRank AS SELECT vDestination、COUNT(*)' 近くで使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください

これは私が得ているエラーです。

+0

どのようなデータベースエラーが発生していますか。質問に含めてください – AceKYD

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください-simple-sql-query – Strawberry

+0

更新された質問を参照してください。 –

答えて

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

@Michael Naresその部分を逃した。私はこの問題を解決することに焦点を合わせました。 – tyro

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と、提案ように。

関連する問題