2009-05-05 5 views
3

그룹에 중복 외래 키를 찾을 수 있습니다 :SQL은 기본적으로 같은 테이블

Elements 
    id INT PRIMARY KEY 
    ... 

Observations 
    id INT PRIMARY KEY 
    ... 

Data 
    id INT PRIMARY KEY 
    observation_id FOREIGN KEY 
    element_id FOREIGN KEY 
    value FLOAT 
    ... 

내가 하나의 observation_id에서 중복 element_id의이 모든 observation_id의를 찾고 싶어요. 이 element_id23 두 개의 관련 행을 가지고 있기 때문에

1|50|23|4.5 
2|50|24|9.9 
3|66|23|4.4 
4|66|23|4.1 

그런 다음 쿼리 observation_id 66을보고 할 것입니다 : 예를 들어, 내가 좋아하는 Data 기록이있는 경우.

(내가 PostgreSQL을 사용하고 있지만, 아마 기본 SQL 질문입니다.)

답변

10

가 '필요'조항과 결합 골재 수를() 사용

 
select observation_id, element_id, count(*) 
from Data 
group by observation_id, element_id 
having count(*) > 1 
+0

그래, 즉 그것 뿐이다. 감사. 나는 너무 가까웠다. – Grant