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과 같은 두 개의 테이블을 가지고 말할 수 있도록하는 방법에 대한 확실하지 않음 점이 30보다 크고 table2가 4의 productid를 갖는 테이블 1에서 s로 모든 행을 가져와야합니다.

현재 이 같은 원시 쿼리를 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를 가지고 있는지 확인 할 수 선택 ::? 이게 조인이 적용되는 곳인가요? 그러면 왼쪽 조인과 다른 사람을 볼 수 있습니다. 그래서 나는 이것에 대해 어떻게해야하는지 확신 할 수 없습니다.

는 편집 :

난 그냥이 작업 가지고

:

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 

결과를 수정하기 위해 다시 저를주고있다,하지만 100 % 확신에/leftjoin에 참여, 의견은 확인을 경우? 당신이 내부 사용하는 경우

+0

추가 한 쿼리가 작동합니까? –

+0

예.하지만 productid가 4 인 테이블 2를 질문으로 찾지 않습니다. 나는 솔루션을 발견하고 그것을 편집하고 댓글 아래에 답변을했는데 정확한 방법인지는 모르겠다. 그래서 어떤 의견이라도 잠시 감사 할께있다. – Jamie000012

답변

0

당신이 제품 ID = 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

고마워, 나는 실제로 이것을 사용하고있다. SELECT userid , SUM (점)을 table1의 LEFTJOIN table2로 table1.userid = table2.userid에 table2.productid = '4'DESC, userid를 기준으로 합계가 30 이상인 GROUP BY 사용자 ID 이게 맞습니까? 아니면 바로 여기에 합류하지 않습니까? 그것은 내 현재의 인스턴스에서 정확한 행을 되돌려 준다. – Jamie000012

+0

이 더 잘 설명된다. 내 제안은 맞습니까? 틀렸어? 작동합니까? 안되니? 당신이 찾고있는 것이 무엇입니까? – scaisEdge

+0

죄송합니다 너무 빨리 주석을 달았습니다, 나는 또한 작동하는 것 같은 해결책으로 원래 게시물을 편집했지만, 당신은 내가 leftjoin에 반대하는 innerjoin을 제안하고 있습니다. 아무 피드백? – Jamie000012