Использование JOIN для включения значений NULL

0

Моя цель - объединить результаты из двух таблиц (прогнозы и user_score), чтобы у меня были все пользователи, которые набрали очки в матче и кто не набрал очки, но участвуют в пуле (poolid = 110)

прогнозы

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

Результаты должны быть такими:

| matchid  | ueserid    | points |  poolid 
--------------------------------------------
  121            8          1      110
  null           10         null   110

Это несколько запросов, которые я пробовал:

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

Этот запрос не работает с моей версией SQL Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/5.6.31/Версия клиентской базы данных: 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

Мне нужна помощь :)

  • 0
    MySQL не поддерживает FULL OUTER JOIN
Теги:

1 ответ

2
Лучший ответ

Используйте LEFT JOIN и поставьте условие matchid = 121 в предложение ON:

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

Демо: http://sqlfiddle.com/#!9/2a1a5/1

Вы также можете использовать свой метод RIGHT JOIN, но matchid = 121 должно быть в предложении ON.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню