초보로서 궁금한데 확인할 길이 없어 질문을 드립니다.
용도는 게시판 상세보기 페이지에서 해당 글의 내용과 이전글, 다음글의 일부 정보, 리스트로 가기 버튼을 클릭했을 때 사용할 페이징 번호를 만들 현재글의 순서를 조회하는 것입니다.
* 해당글 상세정보
SELECT SEQ, NAME, EMAIL_ADDR, BIRTH, THUMB, PROFILE from tbl_01_st_member where seq = 75;
* 이전글 일부 정보
SELECT SEQ as b_SEQ, NAME as b_NAME FROM tbl_01_st_member WHERE SEQ > 75 and IS_DELETE = 0 Order by SEQ ASC LIMIT 1;
* 다음글 일부 정보
SELECT SEQ as n_SEQ, NAME as n_NAME FROM tbl_01_st_member WHERE SEQ < 75 and IS_DELETE = 0 Order by SEQ DESC LIMIT 1;
* 리스트로 가기 버튼을 클릭했을 때 사용할 페이징 번호를 만들 현재글의 순서를 조회
SELECT count(SEQ) as COUNT FROM tbl_01_st_member WHERE SEQ< 75 and IS_DELETE = 0;
이 쿼리를 각각 실행해도 되겠지만, 현재 궁금한 건 위 4개의 쿼리문의 결과를 1개 행으로 확인하는 방법이 있는지 입니다.
* 원하는 컬럼순서 : SEQ, NAME, EMAIL_ADDR, BIRTH, THUMB, PROFILE, b_SEQ, b_NAME, n_SEQ, n_NAME, COUNT
제가 지금까지 확인한 정보로는 JOIN 이긴 하지만, JOIN은 조회되는 SELECT의 컬럼이 같이야 하더라구요.
서로 다른 목적의 자료를 굳이 합칠 필요는 없습니다.
집합의 건수가 제각각이라면 더더욱 조인해서는 안되구요.(다대다 조인(X))
다만 이경우는 건수가 1건으로 제한되므로 억지로 조인하는 것은 가능합니다.
SELECT * FROM (SELECT seq, name, email_addr, birth, thumb, profile FROM tbl_01_st_member WHERE seq = 75 ) a LEFT OUTER JOIN (SELECT seq AS b_seq , name AS b_name FROM tbl_01_st_member WHERE seq > 75 AND is_delete = 0 ORDER BY seq ASC LIMIT 1 ) b ON 1=1 LEFT OUTER JOIN (SELECT seq AS n_seq , name AS n_name FROM tbl_01_st_member WHERE seq < 75 AND is_delete = 0 ORDER BY seq DESC LIMIT 1 ) c ON 1=1 INNER JOIN (SELECT COUNT(*) AS cnt FROM tbl_01_st_member WHERE seq < 75 -- 부등호 반대로 된게 아닌지 의심이 드네요? AND is_delete = 0 ) d ON 1=1 ;