2017-09-07 2 views
0

これを照会、しかし、のは、私は、このようなLaravel/MySQLのクエリ生

表1

| id   | userid  | points  | 
|:-----------|------------:|:------------:| 
| 1   |  1  |  30  
| 2   |  3  |  40  
| 3   |  1  |  30  
| 4   |  3  |  40  
| 5   |  1  |  30  
| 6   |  3  |  40 

表2

| id   | userid  | productid | 
|:-----------|------------:|:------------:| 
| 1   |  1  |  4  
| 2   |  3  |  4  
| 3   |  1  |  3  
| 4   |  3  |  3  
| 5   |  1  |  3  
| 6   |  3  |  3 

Iとして2つのテーブルを持っているとしましょう方法についてわかりませんテーブル1からポイントが30を超え、テーブル2のプロダクトIDが4であるすべての行を取得する必要があります

現時点では、このような生のクエリ:DBを通して

SELECT userid, SUM(points) as points FROM table1 GROUP BY userid HAVING SUM(points) >= 30 ORDER BY SUM(points) DESC, userid 

どのように私は結果のすべてが唯一のユーザーID介して接続された表2を経由して4のプロダクトIDを持っていることを確認することができますを選択::?これは参加が適用可能な場所ですか、私はleftjoinと他の人を参照してくださいので、私はこれについて行く方法があまりにも分かりません、任意の提案を感謝しています。

EDIT:

私はこの作業を得た:

SELECT userid, SUM(points) as points FROM table1 LEFTJOIN table2 on table1.userid = table2.userid WHERE table2.productid = '4' GROUP BY userid HAVING SUM(points) >= 30 ORDER BY SUM(points) DESC, userid 

それがOKであれば確かに参加/ leftjoin 100%の任意のフィードバックを、結果を修正するために戻って私を与えていないが、?あなたが内部使用する場合

+0

あなたが追加したクエリは機能しますか? –

+0

はい、productidが4のテーブル2を質問として探していません。私は解決策を見つけて、それを編集してコメントの下に答えようとしていますが、それが正しい方法であるかどうかはわかりません。したがって、どんなフィードバックも瞬時に評価されます – Jamie000012

答えて

0

あなたが商品コード= 4との和の間で一致のみ関連する行を取得する加入のみこの

SELECT userid, SUM(points) as points 
FROM table1 
inner join table2 on table1.id = table2.userid and productid=4 
GROUP BY userid 
HAVING SUM(points) >= 30 
RDER BY SUM(points) DESC, userid 

またはあなたがその製品= 4の上で持っているユーザーを探している場合使用できます

SELECT userid, SUM(points) as points 
FROM table1 
inner join (
    select distinct userid 
    from table2 where productid =4 

) t on table1.id = t.userid 
GROUP BY userid 
HAVING SUM(points) >= 30 
RDER BY SUM(points) DESC, userid 
+0

ありがとうございます。 、SUM(points)from point1としてテーブル1 LEFTJOIN table2をtable1.userid = table2.userid WHERE table2.productid = '4' SUM(ポイント)> = 30 ORDER BY SUM(ポイント)DESC、ユーザID これは正しいのですか、ここに残っていませんか?それは私の現在のインスタンスで正しい行を返しますか? – Jamie000012

+0

私の提案は正しいですか?間違っている?仕事?いけない?あなたが探しているのは何ですか? – scaisEdge

+0

謝罪はあまりにも迅速にコメントしました。私は元の投稿を編集していましたが、私はそれが働いている左の結合とは対照的に内部結合を提案しています。どんなフィードバック? – Jamie000012