mysql 쿼리문 질문 드립니다.

mysql 쿼리문 질문 드립니다.

QA

mysql 쿼리문 질문 드립니다.

본문

데이터 쿼리는 3개 테이블 조인문을 사용했습니다.

 

A 테이블 -> 회원정보

B 테이블 -> 회원상세정보

C 테이블 -> 계약정보

 

리스트로 Loop 를 돌렸을때 C의 계약정보에 월세가 납입되는 날짜 값이 존재 합니다.

 

데이터는 매달 몇일 이기에 날짜값만 넣었습니다.

 

리스트로 나열될때 가장 오늘과 가까운 데이터를 우선으로 나열할수있는 방법이 무엇일까요??

 

ORDER BY 절을 사용하는것까진 알겠는데 그 뒤를 모르겠네요..

 

데이터는

1. 14일 데이터

2. 15일 데이터

3. 16일 데이터

4. 17일 데이터

 

라고 할때 리스트의 나열 순서가 3, 4, 1, 2 로 되었음 합니다.

 

 

도와주세요.

이 질문에 댓글 쓰기 :

답변 5

ORDER BY DATEDIFF(curdate(), date_column) ASC;

답변 주신 것에서 변형하여 ORDER BY DATEDIFF(16, date_column) ASC; //16오늘 날짜
로 해봤는데...데이터가 14일과 22일 존재 할경우 14일이 우선 순위 입니다.
14일은 지난 날짜가 되어서 후순위가 되어야 하는데요..ㅜㅜ

데이터를 가져올때 이번달의 기준으로 데이터를 가져와서 일자별로 정렬을 하면 좋을듯 한데
지금기준은 일자만의 기준이라 정렬이 애매하긴 합니다. 만약 위 기준으로 정렬을 하려면
월별 컬럼에 월기준을 넣어서 정렬을 해주셔야 합니다.

contractDate 의 기준이 뭔지는 모르겠지만 기준은 오늘 기준으로 뒤에 날짜로 정렬해서 가져오는게 효과적인데 월기준을 구분하지 못하면 정렬하기에는 솔직히 애매합니다.

3,4,1,2의 기준이 무엇인지 모르겠지만,

아마도 오늘, 내일,,, 그리고 날짜순의 기준인거 같은데, 이 기준이 맞다면

ORDER BY FIELD(date_column,내일,오늘) desc 로 정렬하시면 됩니다.

3,4,1,2 는 예제(1. 14일 데이터, 2. 15일 데이터, 3. 16일 데이터, 4. 17일 데이터) 기준 이구요..

알려주신 방식으로 처리 햇을 경우 실 데이터가 14, 30, 18 일경우 14, 18, 30 순으로 나열됩니다.

제가 원하고자 하는건 18, 30, 14 순으로 나였이 되었음 하는 바램입니다.

데이터를 저장할때 order_idx 같은 컬럼을 추가하고 원하시는 순번을 넣어 order by order_idx asc 하심이 좋아보입니다. 쿼리로 제어하기에는 변수가 많을거 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 90
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT