에 가입 : LANG두 외래 키는 내가 3 개 테이블 MySQL 데이터베이스가 WHERE 절
을 LANG_ID언어를
단어
word_id 0 12,385,는 단어
번역
trans_id word_id1 word_id2
LANG_ID 그리고 나는 내가 선택한 두 언어 사이의 모든 번역을 얻을합니다. 명령에
Two foreign keys of the same table. How do I write this SELECT statement?
MySQL multiple Inner Join with Where clause
내가 언어 사이의 번역을 얻으려고 : (잘못된 구문) 명령 에 따라이 기준으로합니다.
SELECT w1.word, lang1.lang AS w2.word, lang2.lang AS FULL
FROM translation AS trans
(JOIN (word AS w1 JOIN language AS lang1 ON lang1.id_lang=w1.lang_id)
ON trans.word_id1=w1.id_word WHERE (w1.lang_id=1 OR w1.lang_id=2))
(JOIN (word AS w2 JOIN language AS lang2 ON lang2.id_lang=w2.lang_id)
ON trans.word_id2=w2.id_word WHERE (w2.lang_id=1 OR w2.lang_id=2))
에 해결 감사합니다 @ 아메드-gdoma 내가이 명령을 함께했다 :
SELECT w1.word AS w1, l1.lang AS L1,w2.word AS w2, l2.lang AS L2 FROM translation AS t
JOIN word AS w1 on w1.id_word=t.word_id1
JOIN word AS w2 on w2.id_word=t.word_id2
JOIN language AS L1 on w1.lang_id=L1.id_lang
JOIN language AS L2 on w2.lang_id=L2.id_lang
WHERE (l2.id_lang=1 OR l2.id_lang=2)
AND (l1.id_lang=2 OR l1.id_lang=1)
그것은 반환 단어 (W1), 그 언어 (L1), 번역 단어 (w2) 및 번역 언어 (L2)
중복 [두 개의 서로 다른 열에 대한 또 다른 SQL 테이블에서 데이터를 일치 얻는 방법 : 내부 가입 및/또는 연합?] (https://stackoverflow.com/q/27682228/3404097) – philipxy
당신 "두 개의 특정 언어 사이의 모든 번역"과 "언어 1과 2 사이의 번역 가져 오기"라는 두 가지의 명확하지 않은 설명을 제공하고이를 수행하지 않는 쿼리를 제공합니다. 네가 원하는 걸 어떻게 알았지?예제 DDL, 입력 매개 변수 및 표 및 원하는 출력을 제공하고 영어를 사용하여 예제에 의존하지 않는 방식으로 원하는 것을 설명하십시오. [mcve]를 읽고 행동하십시오. 추신 : [PKs, FK 및 기타 제약 조건을 쿼리하는 데 필요하지 않습니다.] (https://stackoverflow.com/a/23842061/3404097) – philipxy
안녕하세요. "작동하지 않는다"는 것은 무엇을 의미합니까? 이 쿼리는 구문 분석을하지 않습니다. 설명서 또는 모든 소개의 SELECT 문 구문을 읽으십시오. 귀하의 가장 안쪽 괄호는 불필요하며 귀하의 다른 괄호는 불법적으로 그룹화됩니다. 하위 쿼리 (테이블 이름을 사용할 수있는 select)에는 괄호와 별칭이 필요합니다. 그러나 일련의 조인을 할 수 있기 때문에 하위 쿼리가 필요하지 않습니다. 별도로 작업 할 수있는 부분부터 쿼리를 작성하십시오. – philipxy