코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

게시판 리스트에서 사용자정의 에 추가된 날짜 형식의 기간만 출력

  • 웹개발자1
  • 0
  • 2,132
  • 글주소
  • 04-18

아래와 같이 사용자정의에 필드를 추가 하였습니다.


2e28955166e5ad3322ad329bfa41e239.png
 


게시판 출력 조건으로 줘야 하는데..

도저히 쿼리가 안나와서 질문 드립니다.


조건 1

term_use 가 체크되어 있을경우 term_s, term_e 와 상관없이 무조건 노출이 되어야 합니다.


조건 2

term_s <= 오늘 and term_e >= 오늘



조건 1

select * from cb_post_extra_vars where IF(pev_key = 'term_use' AND CHAR_LENGTH(pev_value) > 0,'Y','N') ='Y'


조건 2

select a.* from ( select * from cb_post_extra_vars where IF(pev_key = 'term_s' AND pev_value <= CURDATE() ,'Y','N') = 'Y' ) a

join (select * from cb_post_extra_vars where IF(pev_key = 'term_e' AND pev_value >= CURDATE() ,'Y','N') = 'Y') b

on a.post_id=b.post_id



합친것.

SELECT 

    *

FROM

    cb_post

WHERE

    post_id IN (

SELECT post_id FROM

(

SELECT post_id FROM cb_post_extra_vars WHERE IF(pev_key = 'term_use' AND CHAR_LENGTH(pev_value) > 0, 'Y', 'N') = 'Y'

UNION

SELECT a.* FROM (SELECT post_id FROM cb_post_extra_vars WHERE IF(pev_key = 'term_s' AND pev_value <= CURDATE(), 'Y', 'N') = 'Y') a

JOIN (SELECT post_id FROM cb_post_extra_vars WHERE IF(pev_key = 'term_e' AND pev_value >= CURDATE(), 'Y', 'N') = 'Y') b

ON a.post_id = b.post_id

) x

)


결과는 나옵니다만...............

보다시피 괴랄한 쿼리가 발생하여 도움을 요청 합니다.