mysql 날짜검색 0 4 730

by 밍밍밍밍 [SQL Query] [2017.10.18 14:38:30]


SELECT
				A.NO,
       	 		Group_Concat((B.USER ORDER BY B.NO) USER,
				A.SDATE,
       			A.EDATE
			FROM
				INFO A,
				USER B
			WHERE 1=1
			AND A.NO = B.NO
			AND SDATE BETWEEN '2017-11-01' AND '2017-11-30'
			GROUP BY A.NO
			ORDER BY A.SDATE

 

SDATE 시작날짜

EDATE 끝날짜

한달마다 데이터를 검색하는건데

시작일을 기준으로 하니깐 아래데이터값을 못찾아서 쿼리를 수정했습니다.

NO USER SDATE EDATE
1 테스터1, 테스터2 2017-10-31 2017-11-01

 

아래쿼리로 수정하니 USER컬럼 값이

테스터1, 테스터2, 테스터1, 테스터2, 테스터1, 테스터2

이런식으로 중복되어 나오는데 어떤식으로 수정을해야할까요..?

답변좀 부탁드립니다~

 

SELECT
				A.NO,
       	 		Group_Concat((B.USER ORDER BY B.NO) USER,
				A.SDATE,
       			A.EDATE
			FROM
				INFO A,
				USER B
			WHERE 1=1
			AND A.NO = B.NO
			AND SDATE BETWEEN '2017-11-01' AND '2017-11-30'
                       OR SDATE BETWEEN '2017-11-01' AND '2017-11-30'
			GROUP BY A.NO
			ORDER BY A.SDATE

 

by jkson [2017.10.18 14:48:26]

범위는

AND A.SDATE <= '2017-11-30'

AND A.EDATE >= '2017-11-01'

이렇게 하시면 될 것 같은데..

NO가 USER의 고유번호 아닌가요?

그렇다면 NO로 GROUP BY 하면 USER는 하나의 값밖에 없을텐데.. GROUP_CONCAT이 무슨 의미인지..

하나의 NO에 USER명이 여러개가 있을 수 있는 거예요?

그리고 GROUP BY 구문에 SDATE, EDATE가 없는데

SELECT 절에는 사용되었는데 어떤 의미로 사용하신 건지..


by 밍밍밍밍 [2017.10.18 15:47:46]

답변감사드립니다~

쿼리를 간단하게 보여드리려고 수정해서 그런거같애요 ㅎㅎ


by 마농 [2017.10.18 14:59:28]
-- 기간검색은 시작일과 종료일을 교차하여 비교하시면 됩니다.
   AND sdate <= '2017-11-30'
   AND edate >= '2017-11-01'

 


by 밍밍밍밍 [2017.10.18 15:47:54]

답변감사드립니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입