는 다행스럽게도 필자는 당신의 테이블 구조에 대한 이해를 가지고 :
테이블 : 사람들
- person_id로 : 일련 번호기본 키
- 으로 PersonName : 텍스트
테이블 : 언어
- LANGUAGE_ID : 일련 번호기본 키
- 언어 : 텍스트
테이블 : Person_Languag e_Link
SELECT PersonName , Language , Language_Level FROM (People T1 LEFT JOIN Person_Language_Link T2 ON T1.Person_ID = T2.Person_ID) LEFT JOIN Languages T3 ON T2.Language_ID = T3.Language_ID WHERE Language IN ('French', 'English')
SELECT T2.PersonName
, T4.Language
, T3.Language_Level
FROM (((
SELECT Person_ID
, Count(Person_ID) AS CountOfPerson_ID
FROM Person_Language_Link LEFT JOIN Languages ON Person_Language_Link.Language_ID = Languages.Language_ID
WHERE Languages.Language In ('French','English')
GROUP BY Person_ID
HAVING Count(Person_ID)=2
) T1 INNER JOIN People T2 ON T1.Person_ID = T2.Person_ID)
INNER JOIN Person_Language_Link T3 ON T1.Person_ID = T3.Person_ID)
INNER JOIN Languages T4 ON T3.Language_ID = T4.Language_ID
WHERE T4.Language IN ('French','English')
내부 SELECT 쿼리가 두 언어를 알고있는 사람들의 person_id로,의 나머지를 반환 TER 몇 가지 내가 SQL을 작성하는 더 나은 방법이 느낄 수 있지만,이, 영어와 불어를 아는 사람들을 반환 생각 그런 다음 쿼리는 해당 ID의 사람 이름, 언어 및 수준을 가져옵니다.
프랑스 & 영어를 사용하는 사람들이 말하는 다른 언어를 보려면 WHERE
최종본을 제거하십시오.
안녕하세요, 맞습니다. 나는 당신이 말한 것을 시도했지만, 영어 나 불어를 사용할 수있는 peple을 보여줍니다. 이것은 한 사람이 두 언어를 모두 말하는 것을 의미하며 실행을 누르면 영어로 2 번, 프랑스어로 1 번 기록됩니다. 또한 영어만을 사용하는 사람을 보여 주며 프랑스 사람은 프랑스어를 할 수 없습니다. 두 언어 (영어 및 프랑스어)를 사용할 수없는 사람 (영어 또는 프랑스어)이 아닌 사람을 나타내는 쿼리를 가져 오려고합니다. – Mitra
두 번째 쿼리를 반환하도록 업데이트했습니다. 네가 무엇을 요구하는지. –