https://solvesql.com/problems/friend-group-of-3/
https://solvesql.com/problems/friend-group-of-3/
solvesql.com
-- 주어진 사용자(3820)와 관련된 사용자 간의 친구 관계를 추적하는 쿼리
-- 세 개의 'edges' 테이블을 이용하여 A, B, C 사용자 간의 관계를 연결
SELECT
A.user_a_id AS user_a_id, -- 사용자 A의 ID (친구 관계의 첫 번째 사용자)
B.user_a_id AS user_b_id, -- 사용자 B의 ID (친구 관계의 두 번째 사용자)
B.user_b_id AS user_c_id -- 사용자 C의 ID (친구 관계의 세 번째 사용자)
FROM edges AS A -- 첫 번째 'edges' 테이블 (A와 B 관계)
JOIN edges AS B -- 두 번째 'edges' 테이블 (B와 C 관계)
ON A.user_b_id = B.user_a_id -- A의 'user_b_id'가 B의 'user_a_id'와 일치하는 경우 (친구 관계 연결)
JOIN edges AS C -- 세 번째 'edges' 테이블 (A와 C 관계)
ON A.user_a_id = C.user_a_id -- A의 'user_a_id'와 C의 'user_a_id'가 일치하는 경우
AND B.user_b_id = C.user_b_id -- B의 'user_b_id'와 C의 'user_b_id'가 일치하는 경우
WHERE
A.user_a_id = 3820 -- 사용자 A가 3820인 경우
OR B.user_a_id = 3820 -- 사용자 B가 3820인 경우
OR B.user_b_id = 3820 -- 사용자 B의 친구가 3820인 경우
'SQL' 카테고리의 다른 글
[solvesql - day 25] 메리 크리스마스 2024 (0) | 2025.01.11 |
---|---|
[solvesql - day 23] 유량(Flow)와 저량(Stock) (0) | 2025.01.11 |
[solvesql - day 22] 친구 수 집계하기 (0) | 2025.01.11 |
[solvesql - day 21] 세션 유지 시간을 10분으로 재정의하기 (0) | 2025.01.11 |
[solvesql - day 20] 미세먼지 수치의 계절간 차이 (0) | 2025.01.11 |