programmers lv2. 조건에 맞는 개발자 찾기
코드 최적화하기.
SELECT id, email , first_name, last_name
from developers
WHERE skill_code & (SELECT code from skillcodes WHERE name = "C#") = (SELECT code from skillcodes WHERE name = "C#")
or skill_code & (SELECT code from skillcodes WHERE name = "Python") = (SELECT code from skillcodes WHERE name = "Python")
ORDER BY id
1안
SELECT
d.id,
d.email,
d.first_name,
d.last_name
FROM developers d,
(
SELECT
(SELECT code FROM skillcodes WHERE name = 'C#') AS csharp_code,
(SELECT code FROM skillcodes WHERE name = 'Python') AS python_code
) sc
WHERE (d.skill_code & sc.csharp_code = sc.csharp_code)
OR (d.skill_code & sc.python_code = sc.python_code)
ORDER BY d.id;
2안
SELECT DISTINCT
d.id,
d.email,
d.first_name,
d.last_name
FROM developers d
JOIN skillcodes s
ON (
(s.name = 'C#' AND (d.skill_code & s.code) = s.code)
OR (s.name = 'Python' AND (d.skill_code & s.code) = s.code)
)
ORDER BY d.id;
이때 distinct는 두번 만족하는 애를 삭제하기 위해 사용됨. ~~