2012-06-19 4 views
1

특정 기간 내에 모든 ID를 검색하려고합니다. 그러나, 다른 테이블에 저장되는 타임 스탬프 :두 개의 쿼리 결과를 연결하는 방법?

Table A has column my_id 
Table B has columns my_id, timestamp 

내가

SELECT 
    id, 
    time 
FROM 
    (SELECT my_id AS id FROM A) q1, 
    (SELECT timestamp AS time FROM B WHERE my_id = id) q2 
; 

하지만 어떻게 다른 서브 쿼리 내에서 id의 값을 얻을 수있는 뭔가를할까요? 이 문제에 대한 우아한 해결책이 있습니까?

(SELECT my_id AS id FROM A) q1, 
(SELECT timestamp AS time FROM B WHERE my_id = id) q2 

모두 ID를해야하는 경우가 같음 :

SELECT a.my_id as id, b.timestamp as time 
FROM A a 
JOIN B b ON (a.my_id = b.my_id); 

난이 도움이되기를 바랍니다

+0

다른 열이 있습니까? –

+0

두 열의 열 이름이 동일하지만 데이터가 다릅니다. 하지만 테이블에있는 ID의 데이터가 필요합니다. 나는 어떤 데이터베이스도 바꿀 수 없다. – nijansen

+0

하나의 테이블에 이들을 포함하는 것이 더 깔끔할 수 있지만 공용체를 사용할 수 있습니다 (이 두 테이블을 함께 묶는 것이 없다고 가정 할 때). –

답변

1

나는 두 번째 하위 쿼리에이 두 테이블을 연결하려고 것을 알 수있다.

+0

이것은 정확히 내가 찾고있는 것입니다. 무리 감사. – nijansen

1

간단한 :

, I는 the manual 인용 때문에
SELECT my_id AS id, b.my_ts 
FROM a 
JOIN b USING (my_id); 
  • FROM A a (등을 의뢰 한)는 넌센스 : 인용되지 않은 반면, 식별자는 대소 구분하게 인용

을 이름은 항상 소문자로 변환됩니다. PostgreSQL을 허용하면서

  • 은 형명 timetimestamp 모든 SQL 표준 예약어와 식별자로서 사용되어서는 안된다.

  • USINGsyntactical shorthand, mostly입니다.

+0

이것은 실제로 다소 예쁘게 보입니다. 'time'과'timestamp'는 실제 응용 프로그램에서 사용되는 이름이 아닙니다. 저는 제가 구하는 것에 대해 모범을 보이기 위해 이것들을 선택했습니다. – nijansen

관련 문제