๐Ÿฌ MySQL/๋ฌธ์ œํ’€์ด

[MySQL] SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ Day10

xod22 2022. 2. 22. 23:40
728x90

https://programmers.co.kr/learn/courses/30/lessons/59044

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(1)

ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””

programmers.co.kr

๋ฌธ์ œ(์˜ค๋žœ ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(1)) : LEFT JOIN
์•„์ง ์ž…์–‘์„ ๋ชป ๊ฐ„ ๋™๋ฌผ ์ค‘, ๊ฐ€์žฅ ์˜ค๋ž˜ ๋ณดํ˜ธ์†Œ์— ์žˆ์—ˆ๋˜ ๋™๋ฌผ 3๋งˆ๋ฆฌ์˜ ์ด๋ฆ„๊ณผ ๋ณดํ˜ธ ์‹œ์ž‘์ผ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๋ณดํ˜ธ ์‹œ์ž‘์ผ ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ’€์ด
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID=OUTS.ANIMAL_ID 
WHERE OUTS.DATETIME IS NULL
ORDER BY INS.DATETIME
LIMIT 3;

 

1. LEFT JOIN์„ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์™ผ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ์ณ์ง„๋‹ค๋Š” ์˜๋ฏธ..! 

ํ•ฉ์ณ์งˆ ๊ฐ’์ด ์—†์œผ๋ฉด NULL๋กœ ํ‘œ์‹œ

 

2. JOIN ํ›„, ๋‘ ํ…Œ์ด๋ธ” ์ค‘ ANIMAL_OUTS ํ…Œ์ด๋ธ”์˜ DATETIME ์ปฌ๋Ÿผ์ด NULL์ธ ํ–‰์ด ์ž…์–‘๋˜์ง€ ์•Š์€ ๋™๋ฌผ์ด๋‹ค.

=> WHERE OUTS.DATETIME IS NULL

 

3. ๊ฒฐ๊ณผ๋Š” ๋ณดํ˜ธ์‹œ์ž‘์ผ ์ˆœ์œผ๋กœ(์˜ค๋ž˜๋œ ์ˆœ์œผ๋กœ) ์กฐํšŒ

=> ORDER BY INS.DATETIME

 

4. ๋™๋ฌผ 3๋งˆ๋ฆฌ๋งŒ ์ถœ๋ ฅํ•ด์•ผํ•จ

=> ๋งˆ์ง€๋ง‰์— LIMIT 3;

728x90