私は一緒に結合し、欠落している翻訳の出力を生成する3つのテーブルを持っています。複数の結合結果セット
-----------------------------
Table 1 - Languages
-----------------------------
LanguageID Name
-----------------------------
Table 2 - Phrase
-----------------------------
PhraseID Text
----------------------------------------------------------
Table 3 - Transaltion
----------------------------------------------------------
TranslationID PhraseID LanguageID Text
私はフレーズごとに、すべての言語を返すSQLクエリを作成しようとした以下のコードを持つ訳があるかどう示しています。しかし、私が欲しいものを出力していないのですが、出力には翻訳に存在するレコードだけが表示されます。以下のコードは私がやっているものです。
SELECT
P.PhraseID
,L.LanguageID
,T.TranslationID
FROM
Phrase P
LEFT JOIN Translation T ON T.PhraseID = P.PhraseID
RIGHT OUTER JOIN [Language] L ON T.LanguageID = L.LanguageID OR L.LanguageID IS NULL
私はおそらく単純なものがありません。しかし、誰かが私を正しい方向に向けることを望んでいた。
EDIT:
Exepected出力
----------------------------------------------------------
Phrase ID Language ID TranslationID
----------------------------------------------------------
1 1 1
1 2 NULL <--- Missing translation
SOLUTION:
SELECT
P.PhraseID,
L.LanguageID,
T.TranslationID
FROM [Language] L
CROSS JOIN Phrase P
LEFT JOIN Translation T ON T.LanguageID = L.LanguageID AND T.PhraseID = P.PhraseID
WHERE P.[Text] = 'Barcode'
問題は何ですか?サンプルデータと期待される結果を示してください。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –
'T.PhraseID'がヌルで、' L.LanguageID'がNULLでないケースを探しています。 – FDavidov
LEFT JOINとRIGHT JOINを混同しないでください。あまりにも混乱します。 ( 'LEFT JOIN'は常に'メインテーブルがオプションのデータをジョインしてメインテーブルに結合するのをはるかに理解しやすいので、常に 'LEFT JOIN 'に固執してください。) – jarlh