DB/쿼리 문제풀이

프로그래머스 ORACLE 있었는데요 없었습니다

sshhhh 2023. 10. 6.

-보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

 

내가 한거

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_OUTS A
    INNER JOIN ANIMAL_INS B
    ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME  < B.DATETIME
ORDER BY B.DATETIME

 

다른 사람 코드

📌암시적인 내부 조인 (implicit inner join)

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE  A.ANIMAL_ID = B.ANIMAL_ID
AND A.DATETIME > B.DATETIME
ORDER BY A.datetime ;
  • 이 쿼리에서 ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블의 조인은 WHERE 절에 조인 조건을 명시하여 이루어집니다.
  • SQL에서 FROM 절에서 여러 테이블을 열거하면, 해당 테이블들 사이에서 조인이 발생합니다. WHERE 절에서 조인 조건을 명시하여 어떤 행들이 결합될지를 지정하는 것입니다.
  • 따라서 **A.ANIMAL_ID = B.ANIMAL_ID AND A.DATETIME > B.DATETIME**라는 조건이 WHERE 절에 있기 때문에 ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블의 레코드가 이 조건에 부합하는 경우에만 결과에 나타나게 됩니다. 이는 내부 조인의 결과로 해당 조건을 만족하는 행들만 선택되어 표시되게 됩니다.
  • 실제로 이 쿼리는 내부 조인이 발생하며, 조인 조건에 따라 조합되는 행들이 결과로 표시됩니다. 따라서 "JOIN" 키워드를 사용하지 않아도 WHERE 절에 조인 조건을 명시하면 조인이 발생합니다.

 

댓글