LEFT, RIGHT JOIN
Last updated
Last updated
์ฐ์ ์์์ ์ Program๊ณผ Teacher ์ Foreign Key๋ฅผ ์ ๊ฑฐํ๊ณ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
Foreign Key ์ญ์ ๋
์ญ์ ํ ์ ์ฅ์ ๊ผญ ํด์ฃผ์ ์ผ ๋ฉ๋๋ค.
Teacher ํ ์ด๋ธ๊ณผ Program ํ ์ด๋ธ์ ์ด์ํ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ง์ด๋ฃ๊ณ ์์์ ํด๋ณด๊ฒ ์ต๋๋ค.
INNER JOIN ๊ฒฐ๊ณผ + ์ผ์ชฝ ํ ์ด๋ธ ๋ชจ๋ ํ์ ์ถ๋ ฅํ๊ณ ์ถ์ผ๋ฉด
LEFT JOIN ๋ฌธ๋ฒ ์ฐ๋ฉด ๋ฉ๋๋ค.
INNER JOIN ๋์ LEFT JOIN๊ณผ ON ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด๋ด ์๋ค.
๊ทธ๋ผ INNER JOIN ๊ฒฐ๊ณผ + ์ผ์ชฝ program ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์ผ์ชฝํ ์ด๋ธ์ ๊ฐ์ฌid์ ์ผ์นํ๋ ์ค๋ฅธ์ชฝํ ์ด๋ธ ํ์ด ์๋ ๊ฒฝ์ฐ๋ NULL ๋ก ์ฑ์์ค๋๋ค.
NULL์ ํ ๋น์๋ค๋ ๋ป์
INNER JOIN ๊ฒฐ๊ณผ + ์ค๋ฅธ์ชฝ ํ ์ด๋ธ ๋ชจ๋ ํ์ ์ถ๋ ฅํ๊ณ ์ถ์ผ๋ฉด
RIGHT JOIN ๋ฌธ๋ฒ ์ฐ๋ฉด ๋ฉ๋๋ค.
INNER JOIN ๋์ RIGHT JOIN๊ณผ ON ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด๋ด ์๋ค.
๊ทธ๋ผ INNER JOIN ๊ฒฐ๊ณผ + ์ค๋ฅธ์ชฝ teacher ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๊ทธ๋ผ ์ด๋ฐ LEFT, RIGHT JOIN์ ์ด๋์ ์ฌ์ฉํ ๊น์?
ํ ์ด๋ธ๋ผ๋ฆฌ ํฉ์น ๋ NULL์ด ๋ฐ์ํ๋ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ์ฐพ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
IS NULL ์กฐ๊ฑด์ NULL์ ๋ด๊ณ ์๋ ํ๋ง ํํฐ๋ง ํด์ค๋๋ค.
์ด๋ ๊ฒ NULL์ด ๋จ๋ ๋ด์ฉ์ ์์ถํด์ ์ด์ํ ์ ์ ํ์ ํด๋ณผ ์๋ ์์ต๋๋ค.
LEFT JOIN๊ณผ RIGHT JOIN ๊ฒฐ๊ณผ๋ฅผ ํฉํด์ ์ถ๋ ฅํ๊ณ ์ถ์ผ๋ฉด FULL JOIN ๋ฌธ๋ฒ์ ์ฐ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง MYSQL, MariaDB, SQLite ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฑฐ๊ธฐ์ LEFT JOIN, RIGHT JOIN ๊ฒฐ๊ณผ๋ฅผ UNION ์ฐ์ฐ์๋ก ๋ฌถ์ผ๋ฉด ๋๋๋ฐ ํ์ํ๋ฉด ์ฐพ์๋ด ์๋ค.
4๊ฐ์ JOIN ๋ฌธ๋ฒ๋ค์ ๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์ด๋ฐ ์์ ๋๋ค.
CROSS JOIN์ ์ธ๋ฐ์์ด์ ์๊ปด์ค
(์ฐธ๊ณ )
LEFT JOIN / LEFT OUTER JOIN
RIGHT JOIN / RIGHT OUTER JOIN
FULL JOIN / FULL OUTER JOIN
๊ฐ์ ๋ป์ด๋ผ ๋๋ถ๋ถ์ DBMS์์ ํผ์ฉํด์ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค.
โจ ์ค์ต. ์ง๋์๊ฐ์ ์ฌ์ฉํ๋ item, sales, user_table์ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ด ์๋ค.
Q1. ๋งค์ถ๋ด์ญ์ด ์๋ item์ ์ถ๋ ฅํด๋ด ์๋ค.
Q2. ๋งค์ถ๋ด์ญ์ ์๋ ๊ณ ๊ฐ๋ค์ ์ถ๋ ฅํด๋ด ์๋ค.