My goal to combine results from two tables (predictions and user_score) so that I have all users who scored the points in the match and who did not score the points, but are participating in the pool (poolid=110)
predictions
predid | matchid | ueserid | points |
--------------------------------------------
1 121 8 1
2 122 8 2
3 122 10 3
user_score
id | poolid | userid |
------------------------------
1 110 8
2 110 10
3 111 8
4 111 10
Results should be like that:
| matchid | ueserid | points | poolid
--------------------------------------------
121 8 1 110
null 10 null 110
This is few queries that i tried:
SELECT * FROM predictions LEFT JOIN user_score on predictions.userid = user_score.userid WHERE predictions.matchid=121 and user_score.poolid=110
SELECT * FROM predictions RIGHT JOIN user_score on predictions.userid = user_score.userid WHERE predictions.matchid=121 and user_score.poolid=110
This query doesnt work on my SQL version Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/5.6.31 / Database client version: libmysql - mysqlnd 5.0.11-dev - 20120503 /
SELECT * FROM predictions FULL OUTER JOIN user_score on predictions.userid = user_score.userid WHERE predictions.matchid=121 and user_score.poolid=110
I need help :)
Use a LEFT JOIN, and put the condition matchid = 121
into the ON clause:
select p.matchid, s.userid, p.points, s.poolid
from user_score s
left join predictions p
on p.userid = s.userid
and p.matchid = 121
where s.poolid = 110
Demo: http://sqlfiddle.com/#!9/2a1a5/1
You can also use your RIGHT JOIN method, but the matchid = 121
condition must be in the ON clause.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.