>

간단히NAMEs테이블이IDNAME) 및주소(열국가도시NAME_ID)

<시간>

이름의 예 :

1 - Hans
2 - Mark
3 - Joseph

주소의 예 :

Denmark - Kopenhagen - 1
Germany - Berlin - 3

도시가 전혀없는 도시 나 덴마크가있을 때만 이름을 모두 선택해야합니다.

SELECT
NA.NAME AS NAME,
AD.CITY AS CITY
FROM NAMES AS NA
LEFT JOIN ADRESSES AS AD ON AD.NAME_ID = NA.ID

지금 같은 것을 추가하면

WHERE AD.COUNTRY="Denmark"

또는

WHERE (AD.COUNTRY="Denmark" OR AD.COUNTRY=NULL)

아직 덴마크의 도시 이름 만 표시하지만 주소/도시가없는 다른 이름은 모두 얻지 못합니다.

물론 조건을 제거하면 모든 이름과 기존 도시는 물론 다른 모든 국가에도 적용됩니다.

원하는 결과는 다음과 같습니다 :

Hans - Kopenhagen
Mark - NULL


  • 답변 # 1

    WHERE AD.COUNTRY='Denmark' 를 의미하는 것 같아   WHERE AD.CITY='Denmark' 가 아님 . 또한 LEFT JOIN과 함께 WHERE 절을 사용하면 INNER JOIN과 같습니다. 따라서 조건을 LEFT JOIN 절로 변경하십시오-

    SELECT NA.NAME AS NAME,
           AD.CITY AS CITY
    FROM NAMES AS NA
    LEFT JOIN ADRESSES AS AD ON AD.NAME_ID = NA.ID
    WHERE AD.COUNTRY='Denmark' OR AD.COUNTRY IS NULL
    
    

  • 답변 # 2

    I need to select all Names which either have no adress at all OR with their CITY but only when their country is... Denmark.

    당신이 원한다고 믿습니다 :

    SELECT NA.NAME AS NAME, AD.CITY AS CITY
    FROM NAMES NA LEFT JOIN 
         ADRESSES AD
         ON AD.NAME_ID = NA.ID
    WHERE AD.COUNTRY = 'DENMARK' OR AD.COUNTRY IS NULL;
    
    

    독일 등 다른 국가에서는 이름을 반환해서는 안됩니다.

관련 자료

  • 이전 python - 시계열 문제에서 이동 평균 기능의 결 측값을 처리하는 방법은 무엇입니까?
  • 다음 swift - 분할 오류 Xcode 11