게시글 칼럼에
int 게시글 아이디
enum 공지여부('Y','N')
varchar 제목
blob 내용
datetime 작성일
varchar 작성자 이름
varchar 작성자 아이디

초기 요구 사항) 공지 목록 불러오는 쿼리 짜주세요

SELECT *
FROM 게시글
WHERE 공지여부 = 'Y'
ORDER BY 작성일 DESC

아 .. 공지가 너무 많아요 글 올리고 30일 이내만 뜨게 해주세요

SELECT *
FROM 게시글
WHERE 공지여부 = 'Y'
  AND DATEDIFF(NOW(), reg_date) <= 30
ORDER BY 작성일 DESC;

공지 숨김 추가해주세요.
enum 숨김여부('Y','N) 추가

SELECT *
FROM 게시글
WHERE 공지여부 = 'Y'
  AND DATEDIFF(NOW(), reg_date) <= 30 AND 공지숨김='N'
ORDER BY 작성일 DESC;

공지에 관리자 등급(총괄매니저, 부매니저, 스태프 등)도 같이 표시해주세요.

SELECT *
FROM 게시글
LEFT JOIN 멤버 ON 게시글.작성자아이디 = 멤버.멤버아이디
WHERE 공지여부 = 'Y'
  AND DATEDIFF(NOW(), 작성일) <= 30
  AND 공지숨김 = 'N' AND
멤버.관리자여부 = 'Y' AND 멤버.휴먼여부 = 'N'
ORDER BY 작성일 DESC;

선생님 공지 개수가 너무 들죽날죽한데 10개까지로 제한해주세요.

SELECT *
FROM
(SELECT *
FROM 게시글
WHERE 공지여부 = 'Y'
  AND DATEDIFF(NOW(), 작성일) <= 30
  AND 공지숨김 = 'N'
ORDER 작성일 DESC limit 10) AS A
LEFT JOIN 멤버 ON A.작성자아이디 = 멤버.멤버아이디
WHERE 멤버.관리자여부 = 'Y' AND 멤버.휴먼여부 = 'N'

선생님 댓글 best 댓글 딱 1개만 미리보기 가능할까요??


SELECT A.*, M.관리자여부, M.휴먼여부, M.등급,
       C.댓글내용 AS best_댓글내용,
       C.작성자아이디 AS best_댓글작성자,
       C.좋아요 AS best_댓글좋아요
FROM (
    SELECT *
    FROM 게시글
    WHERE 공지여부 = 'Y'
      AND DATEDIFF(NOW(), 작성일) <= 30
      AND 공지숨김 = 'N'
    ORDER BY 작성일 DESC
    LIMIT 10
) A
LEFT JOIN 멤버 M
    ON A.작성자아이디 = M.멤버아이디
    AND M.관리자여부 = 'Y'
    AND M.휴먼여부 = 'N'
LEFT JOIN (
    SELECT D1.*
    FROM 댓글 D1
    JOIN (
        SELECT 게시글아이디, MAX(좋아요) AS max_likes
        FROM 댓글
        GROUP BY 게시글아이디
    ) D2
    ON D1.게시글아이디 = D2.게시글아이디 AND D1.좋아요 = D2.max_likes
    LIMIT 1 -- 안전장치: 동점 댓글 여러 개 방지 위해 필요한 경우 정제 필요
) C
ON A.게시글아이디 = C.게시글아이디
ORDER BY A.작성일 DESC;


선생님 로딩속도가 왜이렇게 느리죠..?

네..?


감사합니다.