나는 함께 가입하고 누락 된 번역의 결과물을 생성하고자하는 세 개의 테이블을 가지고 있습니다.다중 조인 결과 세트
-----------------------------
Table 1 - Languages
-----------------------------
LanguageID Name
-----------------------------
Table 2 - Phrase
-----------------------------
PhraseID Text
----------------------------------------------------------
Table 3 - Transaltion
----------------------------------------------------------
TranslationID PhraseID LanguageID Text
I 구문 당 모든 언어를 반환하는 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
아마도 뭔가 간단한 것이 누락되었습니다. 그러나 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랬습니다.
편집 :
Exepected 출력
----------------------------------------------------------
Phrase ID Language ID TranslationID
----------------------------------------------------------
1 1 1
1 2 NULL <--- Missing translation
해결책 :
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 그리고 [** 시작 **] (http : //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) 질문 품질을 향상시키고 더 나은 답변을 얻는 방법을 배우십시오. –
'T.PhraseID'가 null이고'L.LanguageID'가 NULL이 아닌 경우를 찾고 있습니다, 맞습니까? – FDavidov
LEFT JOIN과 RIGHT JOIN을 혼동하지 마십시오. 너무 혼란 스럽습니다. ('LEFT JOIN'을 항상 고수하면,'메인 테이블은 옵션 데이터를 조인하는 메인 테이블 '대신에 메인 테이블 왼쪽 조인을 이해하는 것이 훨씬 쉬워 지므로) – jarlh