이전 검색의 결과가있는 테이블에서 데이터를 추출하려고합니다. 나는 데이터베이스 쿼리에 익숙하지 않고 내 컴퓨터가 너무 많은 메모리를 사용하지 못하게 만들 것이다.다른 검색 결과가있는 테이블에서 데이터 추출
이 데이터는 보드 테스터에서 가져오고 있으며 특정 정보가 필요합니다. 그 보드에 대한 편집을
- : 이것은 내가 알아 내야 하나입니다. 하단의 편집을 참조하십시오.
보드가 그것을 실행되어 처음으로 이사회 테이블에 레코드를 작성
보드가 그것을 실행 때마다이 테스트 기록+----------+----------+---------+---------------------+
| Test_id | Board_id | Operator| Date_Time |
+----------+----------+---------+---------------------+
| 34 | 1 | 1 | 2017-08-02 09:13:34 |
| 35 | 1 | 1 | 2017-08-02 09:13:36 |
| 36 | 1 | 1 | 2017-08-02 09:13:39 |
| 37 | 2 | 1 | 2017-08-02 09:14:10 |
| 38 | 3 | 1 | 2017-08-02 09:16:24 |
| 39 | 3 | 2 | 2017-08-03 10:40:45 |
| 40 | 4 | 2 | 2017-08-03 10:43:34 |
+----------+----------+---------+---------------------+
를 생성
+----------+-------+-----+
| Board_id | Board | rev |
+----------+-------+-----+
| 1 | 1234 | 1 |
| 2 | 1234 | 1 |
| 3 | 1235 | 2 |
| 4 | 5869 | 15 |
+----------+-------+-----+
... 그리고 결과는 결과에 저장됩니다. +-----------+---------+--------+-------------+-------------+
| Result_id | Test_id | Result | Upper_Limit | Lower_Limit |
+-----------+---------+----------------------+-------------+
| 40 | 34 | 2 | 4 | 1 |
| 41 | 34 | 3 | 4 | 1 |
| 42 | 34 | 4 | 4 | 1 |
| 43 | 34 | 0 | 4 | 1 |
| 44 | 35 | 2 | 4 | 1 |
| 45 | 35 | 3 | 4 | 1 |
| 46 | 35 | 4 | 4 | 1 |
| 47 | 35 | 0 | 4 | 1 |
| 48 | 36 | 2 | 4 | 1 |
| 49 | 36 | 3 | 4 | 1 |
| 50 | 36 | 4 | 4 | 1 |
| 51 | 36 | 2 | 4 | 1 |
| 52 | 37 | 2 | 4 | 1 |
| 53 | 37 | 3 | 4 | 1 |
| 54 | 37 | 4 | 4 | 1 |
| 55 | 37 | 2 | 4 | 1 |
| 56 | 38 | 2 | 4 | 1 |
| 57 | 38 | 3 | 4 | 1 |
| 58 | 38 | 4 | 4 | 1 |
| 59 | 38 | 5 | 4 | 1 |
| 60 | 39 | 2 | 4 | 1 |
| 61 | 39 | 3 | 4 | 1 |
| 62 | 39 | 4 | 4 | 1 |
| 63 | 39 | 5 | 4 | 1 |
| 64 | 40 | 2 | 4 | 1 |
| 65 | 40 | 3 | 4 | 1 |
| 66 | 40 | 4 | 4 | 1 |
| 67 | 40 | 3 | 4 | 1 |
+-----------+---------+--------+-------------+-------------+
게시판 및 Board_ID가 특정 기간 동안 실행되었습니다.
SELECT a.Board_ID FROM
Tests a, Results b
WHERE a.Date_Time>='2017-08-02' AND a.Date_Time<'2017-08-03' and
a.Test_ID = b.Test_ID
group by a.Board_ID
해당 Board_ID의 I 쿼리에 관련된 모든 테스트를 수행하려면.
SELECT * from
Tests x, (
SELECT a.Board_ID FROM
Tests a, Results b
WHERE a.Date_Time>='2017-08-02' AND a.Date_Time<'2017-08-03' and
a.Test_ID = b.Test_ID
group by a.Board_ID
) y
where x.Board_ID = y.Board_ID
이 나에게 정확한 결과를 제공하지만, 쿼리가 떨어져 보인다,하지만 난 쿼리에서 실패한 결과를 얻을 수하려고 할 때 위의 내가 가장 문제가있을 때입니다.
SELECT d.Test_ID FROM
Boards a, Tests b, (
SELECT x.Test_ID, x.Board_ID, x.Operator, x.Date_Time from
Tests x, (
SELECT a.Board_ID FROM
Tests a, Results b
WHERE a.Date_Time>='2017-08-02' AND a.Date_Time<'2017-08-03' and
a.Test_ID = b.Test_ID
group by a.Board_ID
) y
)d
WHERE d.Test_ID = b.Test_ID and
b.Result not between Lower_Limit and Upper_Limit
편집 : 당신은 내가 당신이 board_id 3 번과 두 개의 서로 다른 일 테스트있어 볼 만든 테스트 테이블을 보면
. 우리는 주어진 날에 실행 한 게시판,이 예제 2017-08-02 및 해당 게시판에 대한 모든 관련 기록을 볼 필요가 있습니다. 그래서 Board_ID # 3이 2 일에 실행되어 문제가 된 날에 실행되었으므로 필자의 쿼리에 해당 레코드가 필요합니다.
내 솔루션은 내가 내가 원하는 정보를 분석하는 데 필요한 모든 데이터를 얻을 수 3 개 개별 검색 1.에 3 개 중첩 된 검색 결과가 볼이에서
SELECT * FROM
(
SELECT x.Test_ID, x.Board_ID, x.Operator, x.Date_Time from
Test x, (
SELECT a.Board_ID FROM
Test a
join Results b on a.Test_ID = b.Test_ID
WHERE a.Date_Time>='2017-08-11' AND a.Date_Time<'2017-08-12'
group by a.Board_ID
) y
where x.Board_ID = y.Board_ID
)d
join Boards a on a.Board_ID = d.Board_ID
join Results b on b.Test_ID = d.Test_ID
join Test_Names c on c.Test_Name_ID = b.Test_Name_ID --Table Not shown
WHERE
b.result not between Lower_Limit and Upper_Limit
. 다음으로는 구문 분석 대신 필요한 데이터베이스를 쿼리하는 방법을 찾는 것입니다.
마지막 쿼리를 올바르게 붙여 넣었는지 확인하십시오. 그것은 갑자기 "and"로 끝나고 "d.Test_ID = d.Test_ID"도 보게됩니다. 항상 당신이 맞을 것입니다. –
또한 'INNER JOIN'과'LEFT OUTER JOIN'을 사용해야합니다. 쉼표 분리 표는 20-30 년 전에 인기가 있었고 어느 시점에서 작업을 중단합니다. (잘하면) – CptMisery
실제로 아무것도 계산하지 않습니다. 그렇다면 총계는 왜? 그리고 하위 쿼리가 필요한 이유는 무엇입니까? – Parfait