2012-11-23 1 views
0

여기 내 테이블 emp의 내 두 열입니다 및 내 동적 웹 응용 프로그램 (서블릿, JSP로)에서 2 별도의 쿼리를 해고하고있어 어디 Id는 테이블에서 내 데이터를 가져올 수있을 것입니다 ; |시분할 및 날짜 부문 mysql에서

+-------------------------+----------+ 
| date     | serialNo | 
+-------------------------+----------+ 
| 2012-11-21 15:14:08.323 |  6 | 
| 2012-11-21 12:48:12.067 |  6 | 
| 2012-11-21 09:00:16.559 |  8 | 
| 2012-11-21 05:24:20.091 |  9 | 
| 2012-11-21 01:11:24.413 |  6 | 
| 2012-11-21 14:57:28.531 |  11 | 
| 2012-11-21 17:04:31.86 |  9 | 
| 2012-11-21 19:33:36.259 |  13 | 
| 2012-11-21 20:21:40.524 |  9 | 
| 2012-11-21 23:00:44.362 |  8 | 
| 2012-11-21 00:24:53.613 |  11 | 

나는

Time Division | Count 

같은 관계없이 날짜의 시간을

  • 분할을 구현하려면 00:00:00 - 05:59:59 | 3
    | 06:00:00 - 11:59:59 | 1

    | 12:00:00 - 17:59:59 | 4

쿼리 select date count(*) as Count from info where (date between '%00:00:00%' and '%05:59:59%' or date between '%06:00:00%' and '%11:59:59%' or date between '%12:00:00%' and '%17:59:59%') group by date. :(:(

내가 전혀 가까운 :(내 쿼리 어떤이의 아니에요, 그래서이 forum.Any 종류에이 문제를 제기하고있어 발견

.

는 NOT이 단계를 존재하는 경우 (테이블 만들기이

같은 간격의 테이블을 정의 :이 컨텍스트에 입력이 환영의 뜻을

+0

그리고 나는 당신이 시간에 수학적 분할을하고 싶다고 생각했습니다. :). 'GROUP BY'는 당신의 문제에 대한 해결책 인 것 같습니다. – Mr47

+0

사실 나는 시간의 분할을 원합니다. –

+0

이미 도움이 될만한 질문을 보여주십시오. 또한 문제는'GROUP BY (ROUR (HOUR (dateField)/6) * 6)'와 같은 것이 필요합니다. 이것은 실제 코드가 아니라 단지 개념입니다 ... – Mr47

답변

-1

을 당신이 다음을 수행하는 것이 좋습니다 name varchar (10) NULL이 아님, 초기 시간이 아님, 최종 시간이 아님 ) ENGINE = InnoDB DEFAULT CHARSET = latin1; 이름 기입 시작 시간 간격의 끝

:

INSERT steps INTO는 (name, initial, final)이 을 된 값 ('INT1', '00 : 00 : 00 ', '05 : 59 : 59 '), ('int2 ', '06 : 00 : 00', '11 : 59 : 59 '), ('int3 ', '12 : 00 : 00', '17 : 59 : 59 ' ('int4', '18 : 00 : 00 ', '23 : 59 : 59');

(! 내가 17시 59분 59초 후 최종 간격 포 이벤트를 생성했습니다, 필요에 따라 올바른 더 간격을해야합니다 경우 ...)

는 (데이터를 저장하기위한 뭔가를 테이블 만들기 : NOT은 times ( time 시간 NULL NOT, freq INT (10) NOT NULL ) ENGINE = 이노 DEFAULT CHARSET = 라틴있는 경우

테이블 만들기;.

당신의 시간 데이터로 채우기를

최종 쿼리를 수행 선택 steps.name, COUNT (*) 단계에서 , 시간 어디 (steps.initial와 steps.final 사이의 시간) 단계에 의해 그룹.

이름을 다음과 같이 결과가 될 것이다

"INT1", "3" "INT2", "1" "INT3", "4" "INT4", "3"

희망이 도움이 될 것입니다!

+0

저는 이런 종류의 예제를 구글에서 찾아 볼 수 있습니다. 그러나 테이블을 다시 만드는 것보다는 쿼리에 집중하고 있습니다. –

+0

나도 알아.하지만 문제는 카운트를 트리거해야하는 간격을 정의하는 방법이다. 나는 통제 제안을위한 별도의 테이블을 만드는 일에서 벗어날 수 없다. 그건 그렇고 ... 데이터 테이블을 다시 만들 필요가 없습니다. 내 아이디어는 다른 테이블을 제어하는 ​​것입니다. –