SQL解答-(5)JOIN


Programmers SQL


5. JOIN


JOIN
  • 失われたレコードを検索
  • 	SELECT ao.ANIMAL_ID, ao.NAME
    	FROM ANIMAL_OUTS ao
    	LEFT JOIN ANIMAL_INS ai ON ai.ANIMAL_ID=ao.ANIMAL_ID
    	WHERE ai.ANIMAL_ID IS NULL;
    その他の説明:ai.ANIMAL IDがNULLの場合のみ出力します.
  • 、いいえ、
  • 	SELECT ai.ANIMAL_ID, ai.NAME
    	FROM ANIMAL_INS ai
    	LEFT JOIN ANIMAL_OUTS ao
    	ON ai.ANIMAL_ID=ao.ANIMAL_ID
    	WHERE ai.DATETIME>ao.DATETIME
    	ORDER BY ai.DATETIME
  • 長期保護動物(1)
  • 	SELECT ai.NAME, ai.DATETIME
    	FROM ANIMAL_INS ai
    	LEFT JOIN ANIMAL_OUTS ao
    	ON ai.ANIMAL_ID=ao.ANIMAL_ID
    	WHERE ao.DATETIME IS NULL
    	ORDER BY ai.DATETIME
    	LIMIT 3
  • で中性化した動物
  • を保護する
    
    -- 코드를 입력하세요
    -- 보호소에 들어올 당시는 중성화 되지 않음 IN -> Intact
    -- 보호소에 나갈 당시에는 중성화 됨 OUTS-> Spayed 또는 Neutered
    SELECT ai.ANIMAL_ID,ai.ANIMAL_TYPE,ai.NAME
    FROM ANIMAL_INS ai
    LEFT JOIN ANIMAL_OUTS ao
    ON ai.ANIMAL_ID=ao.ANIMAL_ID
    WHERE ai.SEX_UPON_INTAKE LIKE 'Intact %'
    # 3. IN은 와일드카드를 사용할 없기 때문에 SELECT 절을 이용해 찾기
    # 방법 1. AND ao.SEX_UPON_OUTCOME NOT LIKE 'Intact %'
    # 방법 2. IN 안에 서브쿼리를 넣어서 실행
    # AND ao.SEX_UPON_OUTCOME IN (SELECT SEX_UPON_OUTCOME FROM ANIMAL_OUTS WHERE SEX_UPON_OUTCOME LIKE 'Spayed%' OR SEX_UPON_OUTCOME LIKE 'Neutered%')
    # 방법 3. IN 안에 값을 다 넣어서 비교
    # AND AO.SEX_UPON_OUTCOME IN ('Spayed Female','Spayed Male','Neutered Male','Neutered Female')
    # 방법 4. OR을 사용하기 
    AND (AO.SEX_UPON_OUTCOME LIKE 'Spayed%' OR AO.SEX_UPON_OUTCOME LIKE 'Neutered%')
    ORDER BY ai.ANIMAL_ID
  • WHEREセクションでは、INを使用して->Subqueryを検索して比較値を検索します.
  • 欠点はINがワイルドカード%を使用できないことです.
  • LIKEは%利用可能な
  • の話を整理します.
    -条件の比較にLIKEを使用
    -複数本検索する場合はコラムLIKE ORを使用し、必ず()を使用してバンドル!!」比較値1%「ORコラムLIKE」「比較値2%」を使用
    -複数のイベントをクエリーするときにINの値を入力するか、またはINでサブクエリー
  • を使用します.