서브 쿼리를 이용한 SQL 찜 기능 구현하기

Web Development assistant·2022년 4월 24일
0

# SQL

목록 보기
16/28

목표

프로젝트 목록을 조회할때 좋아요 갯수와 로그인된 유저의 좋아요 여부를 알아내기.
상세 조회시 좋아요 여부 알아내기.

테이블 구성

회원관리 테이블

프로젝트 목록 테이블

찜 관리 테이블


+제약 조건

-프로젝트당 회원은 단 1번만 찜을 할 수 있다.
-좋아요 여부 UPDATE로 찜을 취소할 수 있다.
-히스토리는 지우지 않는다.
-추가하자면 찜등록일, 찜수정일 추가 가능.

쿼리

프로젝트 목록 조회

-- 프로젝트 목록 조회
SELECT 
	prj.PRJNO
	, prj.TITLE
	, prj.CONTENT
	, (
		SELECT 
		
			COUNT(*)
		FROM 
			jobfavprj AS fav
		WHERE 
			fav.PRJNO = prj.PRJNO
		) AS COUNT
	, (
		SELECT 
			LIKEORNOT
		FROM jobfavprj AS fav
		WHERE MEMBERNO = 3 -- 멤버 번호 2
			AND fav.PRJNO = prj.PRJNO
	  )AS LIKEORN
FROM 
	jobprjlst AS prj;

프로젝트 상세 조회

 -- 상세조회 쿼리
 
SELECT 
	PRJ.TITLE
	, PRJ.CONTENT
	,(
		SELECT 
			LIKEORNOT
		FROM jobfavprj AS fav
		WHERE MEMBERNO = 1 -- 멤버 번호
			AND fav.PRJNO = prj.PRJNO
	  )AS LIKEORN
FROM 
	jobprjlst PRJ LEFT JOIN jobfavprj FAV 
	ON PRJ.PRJNO = FAV.PRJNO
WHERE 1=1
	AND PRJ.PRJNO = 4; -- 게시글 번호

서브쿼리, 조인 어떤걸 써야할까?

우선은 주어진 과제 해결하는데 초점을 두었다.
더 알아보기
https://velog.io/@hth9876/SUBQUERY-%EC%99%80-JOIN-%EC%9D%98-%EC%B0%A8%EC%9D%B4

0개의 댓글