2016-12-13 13 views
0

を必要に応じてNULLを返しますは、私はこのような2つのテーブルを持っている完全な結果セットを取得し、

:私はこれを試してみた

charID SkillName 
------------------- 
123  Jumping 
123  Running 
NULL  RangedAttack 
123  MeleeWeapon 
NULL  AutomaticWeapon 
123  Handgun 
NULL  EarthMagic 
NULL  WaterMagic 

:characterIdは

だから、結果は次のようになりますにtableAではありません

select a.characterId As charID, b.skillName AS SkillName 
from tableA a 
left join tableB b ON a.skillId = b.skillId 
where characterId = 123 

と、この1:

select a.characterId As charID, b.skillName AS SkillName 
from tableA a 
full outer join tableB b ON a.skillId = b.skillId 
where characterId = 123 

が、私はそれは私に何かを与える必要があります知っているにもかかわらず、両方のクエリは私に何の結果が得られません。

必要な結果を得るための適切な方法はありますか?

ありがとうございます!

+0

「完全結合」を使用し、 'where'条件を' join'節に移動する必要があります。 –

答えて

3

あなたleft joinは間違った順序である:

select a.characterId As charID, b.skillName 
from tableB b left join 
    tableA a 
    on a.skillid = b.skillId and a.characterId = 123; 

あなたがTableB内のすべてのスキルをしたい場合は、それがleft joinの最初のテーブルでなければなりません。

関連する問題