API 쿼리 구현
세자보의 기능을 수행하기 위한 쿼리문을 서술한다.
쿼리 작성에 사용될 뷰 정의
모든 게시물에 대한 정보 및 좋아요/싫어요 수, 각 건물 배치 여부
CREATE view v_post
AS
SELECT *
FROM (SELECT a.post_id,
author,
reg_date,
exp_date,
title,
content,
url,
img_url,
view_count,
size,
Ifnull(up, 0) "up",
Ifnull(down, 0) "down",
IF(yul IS NULL, 0, yul) "yul",
IF(dae IS NULL, 0, dae) "dae",
IF(hak IS NULL, 0, hak) "hak",
IF(gwang IS NULL, 0, gwang) "gwang",
Ifnull(co, 0) AS num
FROM (SELECT post_id,
author,
reg_date,
exp_date,
title,
content,
url,
img_url,
view_count,
size,
Ifnull(up, 0) "up",
Ifnull(down, 0) "down"
FROM post
LEFT JOIN (SELECT *
FROM (SELECT post_id,
Count(*) AS 'up'
FROM like_dislike
GROUP BY post_id,
interest
HAVING interest = 1) AS good
LEFT JOIN (SELECT post_id,
Ifnull(Count(*), 0)
AS
'down'
FROM like_dislike
GROUP BY post_id,
interest
HAVING interest = 0) AS
bad
USING(
post_id)
UNION
SELECT post_id,
up,
down
FROM (SELECT post_id,
Count(*) AS 'up'
FROM like_dislike
GROUP BY post_id,
interest
HAVING interest = 1) AS good
RIGHT JOIN (SELECT
post_id,
Ifnull(Count(*), 0)
AS
'down'
FROM like_dislike
GROUP BY post_id,
interest
HAVING interest = 0) AS
bad
USING(
post_id)
) AS p
USING(post_id)) AS a
LEFT JOIN (SELECT DISTINCT( post_id ),
IF(yul IS NULL, 0, 1) "yul",
IF(dae IS NULL, 0, 1) "dae",
IF(hak IS NULL, 0, 1) "hak",
IF(gwang IS NULL, 0, 1) "gwang"
FROM (SELECT DISTINCT( post_id )
FROM post_building) AS pb
LEFT JOIN (SELECT post_id,
building_code AS yul
FROM post_building
WHERE building_code = 104) AS
yulb
USING(
post_id)
LEFT JOIN (SELECT post_id,
building_code AS dae
FROM post_building
WHERE building_code = 101) AS
daeb
USING(
post_id)
LEFT JOIN (SELECT post_id,
building_code AS hak
FROM post_building
WHERE building_code = 103) AS
hakb
USING(
post_id)
LEFT JOIN (SELECT post_id,
building_code AS gwang
FROM post_building
WHERE building_code = 102) AS
gwangb USING
(post_id
)) AS b USING(post_id)
LEFT JOIN (SELECT post_id,
Count(*) AS co
FROM post_building
GROUP BY post_id) AS c USING(post_id)) AS d
JOIN (SELECT student_id "author",
u.name "user_name",
m.name "major_name",
color,
major_code
FROM user AS u
JOIN major AS m USING(major_code)) AS e USING(author); 보드 및 게시물 관련 쿼리
보드에 모든 게시물 불러오기*
보드에 특정 건물 게시물 불러오기*
선택한 게시물 조회수 증가
게시물 호감 기능
게시물 호감 변경 기능
게시물 검색 기능
사용자 기능 관련 쿼리
회원정보 검증하기
회원가입
회원정보 불러오기
게시물 등록하기*
게시물 수정하기*
게시물 삭제하기
Last updated
Was this helpful?