>
<올>
  • timesetup  표(비정규 화),이 표는 결과 필터링에 사용 된 시간 조정용입니다

    <시간>

    | time_id | period_from | period_to  | session1_from | session1_to | session2_from | session2_to | session3_from | session3_to | session4_from | session4_to | session5_from | session5_to |
    |---------|-------------|------------|---------------|-------------|---------------|-------------|---------------|-------------|---------------|-------------|---------------|-------------|
    | 1       | 10/09/2015  | 11/09/2015 | 04:00:00      | 05:00:00    | 12:00:00      | 13:00:00    | 15:00:00      | 16:00:00    | 18:00:00      | 18:35:00    | 19:00:00      | 20:00:00    |
    | 2       | 12/09/2015  | 13/09/2015 | 04:10:00      | 05:10:00    | 12:10:00      | 13:10:00    | 15:10:00      | 16:10:00    | 18:10:00      | 18:45:00    | 19:10:00      | 20:10:00    |
    |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    
    

  • 정규화 된 버전 :

    dateperiode :

    | period_id | date_from  | date_to    |
    |-----------|------------|------------|
    | 1         | 10/09/2015 | 11/09/2015 |
    | 2         | 12/09/2015 | 13/09/2015 |
    |-------------------------------------|
    
    

    sessionrange :

    | sessionrange_id | session   | session_from | session_to  |
    |-----------------|-----------|--------------|-------------|
    | 1               | 1         | 04:00:00     | 05:00:00    |
    | 2               | 2         | 12:00:00     | 13:00:00    |
    | 3               | 3         | 15:00:00     | 16:00:00    |
    | 4               | 4         | 18:00:00     | 18:35:00    |
    | 5               | 5         | 19:00:00     | 20:00:00    |
    | 6               | 1         | 04:10:00     | 05:10:00    |
    | 7               | 2         | 12:10:00     | 13:10:00    |
    | 8               | 3         | 15:10:00     | 16:10:00    |
    | 9               | 4         | 18:10:00     | 18:45:00    |
    | 10              | 5         | 19:10:00     | 20:10:00    |
    |-----------------|-----------|--------------|-------------|
    
    

    timsetup :

    | period_id | sessionrange_id |
    |-----------|-----------------|
    | 1         | 1               |
    | 1         | 2               |
    | 1         | 3               |
    | 1         | 4               |
    | 1         | 5               |
    | 2         | 6               |
    | 2         | 7               |
    | 2         | 8               |
    | 2         | 9               |
    | 2         | 10              |
    |-----------|-----------------|
    
    

    1. checktime  표에서이 표는 지문 스캐너 ( tapping_time )의 데이터를 포함합니다.  필드)

      |userid  | tapping_time         |
      |--------|----------------------|
      |234     | 10/09/2015 04:20:04  |
      |234     | 10/09/2015 04:20:06  |
      |234     | 10/09/2015 12:15:35  |
      |234     | 10/09/2015 15:31:11  |
      |234     | 10/09/2015 18:19:10  |
      |234     | 10/09/2015 18:19:15  |
      |234     | 10/09/2015 19:37:53  |
      |234     | 11/09/2015 04:38:42  |
      |234     | 11/09/2015 04:38:47  |
      |234     | 11/09/2015 12:21:27  |
      |234     | 11/09/2015 15:45:30  |
      |234     | 11/09/2015 15:45:37  |
      |234     | 11/09/2015 18:27:15  |
      |234     | 11/09/2015 19:55:08  |
      |234     | 11/09/2015 19:55:12  |
      |234     | 12/09/2015 04:45:10  |
      |234     | 12/09/2015 04:45:13  |
      |234     | 12/09/2015 13:12:55  |
      |234     | 12/09/2015 16:35:08  |
      |234     | 12/09/2015 18:49:10  |
      |234     | 12/09/2015 20:20:57  |
      |234     | 13/09/2015 05:11:56  |
      |234     | 13/09/2015 05:12:05  |
      |234     | 13/09/2015 12:45:13  |
      |234     | 13/09/2015 15:47:25  |
      |234     | 13/09/2015 18:31:27  |
      |234     | 13/09/2015 18:31:30  |
      |234     | 13/09/2015 20:01:18  |
      |-------------------------------|
      
      

    날짜/시간을 timesetup 의 기간으로 그룹화하는 Access 쿼리를 작성하려고합니다.  표. tapping_time   timesetup세션조건에 따라 세션 당하나만결과를 ​​가져야합니다 (사용자가 한 번에 두 번 이상 탭할 때도).  표. 또한 사용자는 세션의외부시간을 탭합니다 ( session_from 사이의 시간)  그리고 session_to ) 필드는 계산되지 않거나 결과 표에 표시되지 않아야합니다.

    원하는 결과 :

    | userid | date       | tapping_on | session |
    |--------|------------|------------|---------|
    | 234    | 10/09/2015 | 04:20:04   | 1       |
    | 234    | 10/09/2015 | 12:15:35   | 2       |
    | 234    | 10/09/2015 | 15:31:11   | 3       |
    | 234    | 10/09/2015 | 18:19:10   | 4       |
    | 234    | 10/09/2015 | 19:37:53   | 5       |
    | 234    | 11/09/2015 | 04:38:42   | 1       |
    | 234    | 11/09/2015 | 12:21:27   | 2       |
    | 234    | 11/09/2015 | 15:45:30   | 3       |
    | 234    | 11/09/2015 | 18:27:15   | 4       |
    | 234    | 11/09/2015 | 19:55:08   | 5       |
    | 234    | 12/09/2015 | 04:45:10   | 1       |
    | 234    | 12/09/2015 | 16:35:08   | 3       |
    | 234    | 12/09/2015 | 18:49:10   | 4       |
    | 234    | 13/09/2015 | 12:45:13   | 2       |
    | 234    | 13/09/2015 | 15:47:25   | 3       |
    | 234    | 13/09/2015 | 18:31:27   | 4       |
    | 234    | 13/09/2015 | 20:01:18   | 5       |
    |--------------------------------------------|
    
    

    • 답변 # 1

      dateperiode와 sessionrange의 관계가 나와 일대 다 관계처럼 보이므로 접합 테이블이 필요하지 않기 때문에 정규화에 대해 약간 배척했을 수 있습니다.

      다음 데이터를 사용하면 다음 쿼리가 작동해야한다고 생각하지만 불행히도 준비가 된 적절한 테스트 설정이 없습니다 :

      SELECT userid, tDatepart As [date], Min(t.tapping_time) As tapping_on, session FROM 
          (
              SELECT session_from, session_to, date_from, date_to, session
              FROM timsetup i
              INNER JOIN dateperiode d ON i.period_id = d.period_id
              INNER JOIN sessionrange q ON t.sessionrange_id = q.sessionrange_id
          ) As s
      INNER JOIN 
          (SELECT Int(tapping_time) As tDatepart, CDate(tapping_time - Int(tapping_time)) As tTimepart, userid, tapping_time
          FROM checktime) t
      ON (t.tDatePart >= s.date_from AND t.tDatePart <= s.date_to AND t.tTimePart >= s.session_from AND t.tTimePart <= s.session_to)
      GROUP BY userid, tDatepart, session
      
      

    관련 자료

  • 이전 imagemagick - Image Magick를 사용하여 이미지 변환 및 결과 표시
  • 다음 c# - 제약 조건이있는 일반 클래스를 사용하여 DocumentDB에서 쿼리