1

user table

id : Integer
name: String

user_review table

user_id: Integer
review: Integer

Now, the user record is having many user_review records.

I need to get all users who has 5 review and 4 review.

SELECT * FROM user JOIN user_review ON user.id = user_review.user_id
 WHERE user_review.review = 5 AND user_review.review = 4

Abobe code is retuning empty result.

I tried below code, but, return wrong result

SELECT * FROM user JOIN user_review ON user.id = user_review.user_id
 WHERE user_review.review in [5, 4] 

Sample data Users

id name
1  MM
2  EE

user_profile

user_id, review
1        4
1        5
2        4
2        5
3        4
4        5

Wanted result

id name
1  MM             // user1, having (review4) and (review5)
2  EE             // user2, having (review4) and (review5)
Shadow
  • 33,525
  • 10
  • 51
  • 64
Wang Liang
  • 4,244
  • 6
  • 22
  • 45

1 Answers1

2

I think this is what you want. All users who have both a review = 4 and a review = 5

select * from users 
where exists(select * from user_review where user_id = user.id and review = 4)
and exists(select * from user_review where user_id = user.id and review = 5)
Nicholas Hunter
  • 1,791
  • 1
  • 11
  • 14