1
여러 테이블에서 여러 쿼리를 사용하여 효율성 및 속도를 단일 쿼리로 결합했습니다.단일 쿼리에서 다른 제약 조건을 가진 다른 테이블에 대한 여러 SELECT 문은 결과를 null로 표시하지 않습니다.
내 표는 다음과 같다 :
m1
------------------------------------------------------------------------
id | time | min | max | mean
------------------------------------------------------------------------
a 00:10:00 1 5 3
a 00:20:00 2 6 4
a 00:30:00 3 7 5
a 00:40:00 4 8 6
b 00:40:00 11 15 13
b 00:50:00 21 26 24
c 00:10:00 21 27 25
m2
------------------------------------------------------------------------
id | time | min | max | mean
------------------------------------------------------------------------
a 00:30:00 22 44 33
a 00:40:00 33 55 44
a 00:50:00 44 66 55
b 00:20:00 1 4 2
b 00:30:00 1 3 2
b 00:30:00 2 5 4
c 00:20:00 6 7 6
m3
------------------------------------------------------------------------
id | time | min | max | mean
------------------------------------------------------------------------
b 00:10:00 11 15 13
b 00:20:00 21 26 14
c 00:00:00 21 27 25
내 쿼리
는 다음과 같이 : 이SELECT min,max,mean FROM m1 WHERE id='a' AND time='00:10:00'
SELECT min,max,mean FROM m2 WHERE id='a' AND time='00:10:00'
SELECT min,max,mean FROM m3 WHERE id='a' AND time='00:10:00'
SELECT min,max,mean FROM m1 WHERE id='a' AND time='00:20:00'
SELECT min,max,mean FROM m2 WHERE id='a' AND time='00:20:00'
SELECT min,max,mean FROM m3 WHERE id='a' AND time='00:20:00'
SELECT min,max,mean FROM m1 WHERE id='a' AND time='00:30:00'
SELECT min,max,mean FROM m2 WHERE id='a' AND time='00:30:00'
SELECT min,max,mean FROM m3 WHERE id='a' AND time='00:30:00'
SELECT min,max,mean FROM m1 WHERE id='a' AND time='00:40:00'
SELECT min,max,mean FROM m2 WHERE id='a' AND time='00:40:00'
SELECT min,max,mean FROM m3 WHERE id='a' AND time='00:40:00'
SELECT min,max,mean FROM m1 WHERE id='a' AND time='00:50:00'
SELECT min,max,mean FROM m2 WHERE id='a' AND time='00:50:00'
SELECT min,max,mean FROM m3 WHERE id='a' AND time='00:50:00'
나는 이러한 쿼리의 결과를 받아 수동으로 다음과 같습니다 배열에 함께 넣어 :
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#| time | m1.min | m1.max | m1.mean | m2.min | m2.max | m2.mean | m3.min | m3.max | m3.mean
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1 00:10:00 1 5 3 NULL NULL NULL NULL NULL NULL
2 00:20:00 2 6 4 NULL NULL NULL NULL NULL NULL
3 00:30:00 3 7 5 22 44 33 NULL NULL NULL
4 00:40:00 NULL NULL NULL 33 55 44 NULL NULL NULL
5 00:50:00 NULL NULL NULL 44 66 55 NULL NULL NULL
위의 배열을 생성하는 방법을 알아 냈습니다. 어느 한 sq l 문 또는 시간 스탬프 당 하나의 SQL 문. 조인, 노조, 케이스 문 등을 행운과 함께 시도했습니다. 'NULL'을 표시하거나 일치하는 결과가없는 열에 공백 값이 있어야한다는 사실은 사물을 복잡하게 만드는 것처럼 보입니다.
저는 PostgreSQL 8.3.6을 사용하고 있습니다.
도움을 주시면 감사하겠습니다. 내가 찾은
브릴리언트! 고맙습니다. 이것은 트릭을 할 것으로 보인다. 한 번에 약간의 데이터를 가져 오려면 LIMIT & OFFSET을 사용합니다. – Irina