쿼리의 중요성을 깨달았다.
복잡한 쿼리는 한번도 접해보지 못했는데
하나씩 생각해서 조합하는 연습을 해야겠다.
-- 1로 로그인 --2의 구독정보 보기
-- 1번과 3번의 정보(toUserId)가 구독 모달에 출력
SELECT * FROM subscribe;
SELECT * FROM user;
SELECT * FROM subscribe WHERE fromUserId=2;
SELECT * FROM user WHERE id= 1 OR id =3;
-- 조인 (user.id=subscribe.toUserId)
SELECT u.id, u.username, u.profileImageUrl
FROM user u INNER JOIN subscribe s
ON u.id = s.touserId
WHERE s.fromUserId =2;
-- 로그인(1), 화면(1,3) 1번이 3번을 구독했는가?
SELECT true FROM subscribe WHERE fromUserId=1 AND toUserId=1;
SELECT true FROM subscribe WHERE fromUserId=1 AND toUserId=3;
-- 가상칼럼을 추가
SELECT u.id, u.username, u.profileImageUrl, 1 subscribeState
FROM user u INNER JOIN subscribe s
ON u.id = s.touserId
WHERE s.fromUserId =2;
-- 스칼라 서브쿼리 (select절에 select추가, 단일행 리턴)
SELECT u.id, u.username, u.profileImageUrl,
(SELECT COUNT(*) FROM user) subscribeState
FROM user u INNER JOIN subscribe s
ON u.id = s.touserId
WHERE s.fromUserId =2;
-- 구독여부 완성쿼리
SELECT u.id, u.username, u.profileImageUrl,
(SELECT true FROM subscribe WHERE fromUserId=1 AND toUserId=u.id) subscribeState
FROM user u INNER JOIN subscribe s
ON u.id = s.touserId
WHERE s.fromUserId =2;
SELECT true FROM subscribe WHERE fromUserId=1 AND toUserId=3;
-- 동일 유저인지 판단쿼리
SELECT u.id, u.username, u.profileImageUrl,
if((SELECT 1 FROM subscribe WHERE fromUserId=1 AND toUserId=u.id),1,0) subscribeState,
if((1=u.id),1,0) equalUserState
FROM user u INNER JOIN subscribe s
ON u.id = s.touserId
WHERE s.fromUserId =2;
https://easyupclass.e-itwill.com/course/course_view.jsp?id=27&cid=28