Laravel Mysql从两个表中选择并在第三个表上连接结果

时间:2016-10-17 16:36:32

标签: php mysql sql laravel

我想知道是否可以选择两个表并加入第三个表

我有3张桌子:

upvotes -id(PK) -voteOn(FK) - 指向用户PK -voteBy(FK) - 指向用户PK -vote(Int) -voteAdded(Int) - unix timestamp

downvotes -id(PK) -voteOn(FK) - 指向用户PK -voteBy(FK) - 指向用户PK -vote(tinyInteger) -voteAdded(Int) - unix timestamp

用户 id(PK) 用户名

我现在要做的是〜从表格 upvotes downvotes 中选择所有投票,其中voteOn = 2,然后加入表格用户 voteBy orderBy voteAdded Asc

或多或少我想获得特定用户的所有投票然后加入用户表,以便我可以获得投票人的用户名

1 个答案:

答案 0 :(得分:0)

您可以使用数据库外观来实现此目的,这将生成在db

上触发的SQL查询
// From pixels to 0-1 
vPos.xy /= vResolution.xy;

// Flip Y so that 0 is top 
vPos.y = (1.-vPos.y);

// Map to NDC -1,+1
vPos.xy = vPos.xy*2.-1.;

然后,您可以使用foreach

循环访问用户
  $users = DB::table("users AS a") 
                   ->select(array("a.id as user_id", "a.username", "b.voteOn as upvote_on",
                "b.vote as upvote", "b.voteAdded as upvote_added","c.voteOn as downvote_on",  "c.vote as downvote",
                  "c.voteAdded as downvote_added"))
                   ->join("upvotes AS b",  "a.id", "=", "b.voteBy")
                   ->join("downvotes AS c",  "a.id", "=", "c.voteBy")
                   ->orderBy("b.voteAdded", "asc") 
                   ->get();

那应该有用