2009-05-05 7 views
3

Mit Tabellen finden im Grunde wie folgt:SQL doppelten Fremdschlüssel in einer Gruppe

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 
    ... 

ich all observation_id s finden will, wo es doppelte element_id s in einer einzigen observation_id. Zum Beispiel, wenn ich Data Datensätze wie:

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

Dann würde die Abfrage observation_id66 berichten, weil es zwei zugehörige Reihen mit element_id23 hat.

(Ich bin mit PostgreSQL, aber das ist wahrscheinlich eine grundlegende SQL-Frage.)

Antwort

10

die Zählung() verwendet Aggregat mit einer 'mit' Klausel kombiniert:

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

Yup, das ist es. Vielen Dank. Ich war so nah. – Grant