简体   繁体   中英

Using JOIN to include NULL values

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.

http://sqlfiddle.com/#!9/2a1a5/6

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM