[プログラマー][SQL]JOIN


📌 JOIN


[消えた記録を探す]


一部のデータは天災で失われた.養子縁組の記録がありますので、SQL文に記入してID順に保護に入っていない動物のIDと名前を調べてください.
SELECT AO.ANIMAL_ID, AO.NAME
FROM ANIMAL_INS as AI
RIGHT JOIN ANIMAL_OUTS as AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.ANIMAL_ID IS NULL

[あるはずなのにない]


管理者のミスで、一部の動物の養子縁組日の入力が間違っています.保護開始日よりも養子縁組日が早い動物のIDと名前を照会するSQL文を記入してください.結果は、保護開始日の遅い順に表示されます.
SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS as AI
JOIN ANIMAL_OUTS as AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.DATETIME > AO.DATETIME
ORDER BY AI.DATETIME ASC

[長期保護動物(1)]


まだ養子縁組されていない動物の中で、保護されている最長時間の動物の名前と保護開始日を照会するSQL文を3つ記入してください.結果は保護開始日で表示されます.
SELECT AI.NAME, AI.DATETIME
FROM ANIMAL_INS as AI
LEFT JOIN ANIMAL_OUTS as AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AO.ANIMAL_ID IS NULL
ORDER BY AI.DATETIME ASC
LIMIT 3

[保護所で中性化した動物]


中性化手術を受けた動物の情報を庇護所から知りたい.保護所に入るときは中性化1はありませんが、保護所を出るときは、中性化動物のIDと生物種、名前のID順で調べてくださいSQL文.
-- solution1
SELECT AI.ANIMAL_ID, AI.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_INS as AI
JOIN ANIMAL_OUTS as AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.SEX_UPON_INTAKE != AO.SEX_UPON_OUTCOME AND
        AI.SEX_UPON_INTAKE LIKE 'Intact%'


-- solution2
SELECT AI.ANIMAL_ID, AI.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_INS as AI
JOIN ANIMAL_OUTS as AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.SEX_UPON_INTAKE LIKE 'Intact%' AND (
    AO.SEX_UPON_OUTCOME LIKE 'Spayed%' | or AO.SEX_UPON_OUTCOME LIKE 'Neutered%'
    )