Самостоятельное объединение таблиц для сравнения значений - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь сравнить значения в столбце с использованием объединения в той же таблице. Вот пример таблицы:

|favorite item|answer|name|
-----------------------------
|color|red|jake|
|animal|bear|jake|
|food|pizza|jake|
|color|blue|sally|
|movie|frozen|sally|
|food|pasta|sally|

Я пытался использовать объединения и союзы, но ни один из них не может получить именно то, что я ищу.

Это самое близкое, что я смог получить:

select j.favorite, s.favoite, j.answer,  s.answer  
from testTable j
full join testTable s on (j.favorite=s.favorite) and s.name='sally' 
where j.name = 'jake';

Но это дает мне:

-----------------------------
|color|color|red|blue|    
|animal|null|bear|null|   
|food|food|pizza|pasta|

Я бы хотел, чтобы он включал нулевые значения для обоих студентов, например:

|color|red|blue|
|animal|bear|null|
|food|pizza|pasta|
|movie|null|frozen|

Надеюсь, это имеет смысл, и любая помощь действительно ценится. Спасибо

1 Ответ

1 голос
/ 18 апреля 2019

FULL JOIN сложно - и вы, кажется, хотите этого. Ключ фильтрует до JOIN:

select j.favorite, s.favoite, j.answer,  s.answer  
from (select j.*
      from testTable j
      where j.name = 'jake'
     ) j full join
     (select s.*
      from testTable s
      where s.name = 'sally'
     ) s
     on j.favorite = s.favorite;
...