2015-02-09 60 views
0

请告诉我该怎么办这一关正确的查询使用原始表达式Laravel 4

select @a:=POW(max(count_votes), 1/10) from users; 

select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc ; 

试过这样

$rating = DB::statement('select @a:=POW(max(count_votes), 1/10) from users; 

select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc; '); 

return $rating; 

$rating = DB::table('users') 
        ->select(DB::raw('*, @a:=POW(max(count_votes), 1/10) ')) 
        ->select(DB::raw('*,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting')) 
        ->orderBy("actual_raiting") 
        ->get(); 

    return $rating; 

我究竟做错了什么?

PS:我的英语水平

回答

0

尝试把它们都放在一个选择:

$rating = DB::table('users') 
      ->select(DB::raw('*, raiting, count_votes, ((LOG(POW(max(count_votes), 1/10),count_votes))+raiting)/2 as actual_raiting')) 
      ->orderBy("actual_raiting") 
      ->get(); 
+0

谢谢!它帮助我 – Rai 2015-02-09 08:27:28

+0

不客气。如果这有效,请[标记为已接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。如果不是,请告诉我应该更改/编辑或添加自己的答案:) – lukasgeiter 2015-02-09 08:30:00

+0

如何仅获取字段'actual_rating'? 他告诉我要返回所有数据 – Rai 2015-02-09 08:36:12

0

/不好意思试试这个:

$rating1 = DB::select(DB::raw('select @a:=POW(max(count_votes), 1/10) from users')); 

$rating2 = DB::select(DB::raw('select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc; ')); 

echo "<pre>"; 
print_r($rating1); 
print_r($rating2); 
echo "</pre>"; 
exit; 

看,如果没有什么帮助。

+0

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第3行(选择id,名称,raiting,count_votes,((LOG(@ a,count_votes))+ raiting)/ 2附近使用正确的语法:从用户选择@a:= POW(max(count_votes),1/10);选择id,name,raiting,count_votes,((LOG(@ a,count_votes))+ raiting)/ 2作为actual_raiting from users order by actual_raiting desc;) – Rai 2015-02-09 08:13:32

+0

因此,这意味着您的SQL查询不正确,请尝试在phpmyAdmin中运行它,纠正并重试。 – 2015-02-09 08:14:56

+0

http://i58.fastpic.ru/big/2015/0209/4b/8cc0eaf78c05cf52a8f5864ff052a84b.png – Rai 2015-02-09 08:15:14