Guten Abend,
ich habe ein Problem und weis nicht so recht wie ich an die Sache rangehen soll.
Also eine Tabelle mit den Felder [ID] [Name,Vorname] und [Geburtsdatum]. Da es mehrere IDs zu einem Namen geben kann, muss ich diese im Zusammenhang mit dem Geburtsdatum selektieren können.
Wie würdet Ihr das lösen?
castorp
21. November 2011 um 19:26
2
Kannst Du mal ein Beispiel zeigen? Ich verstehe nicht wirklich was Du willst.
(Übrigens: [ID] ist ein ungültiger Bezeichner für eine Spalte)
Die Tabelle sieht vereinfacht so aus.
KundenID,Name,Geburtstag
1,Müller,Andrea,10.11.1900
2,Bertram,Evi,19.03.1980
3,Müller,Andrea,10.11.1900
4,Heinzel,martin,01.03.1986
Ich müsste alle Patienten mit gleichem Namen und Geburtsdatum finden, da die KundenID nicht eindeutig ist.
Als Ergebnis dann:
Müller,Andrea,11.10.1900,1
Müller,Andrea,11.10.1900,3
castorp
22. November 2011 um 18:39
4
Wenn’s einfach nur um Name und Geburtstag geht:
select name,
geburtstag
from patienten
group by name, geburtstag
having count(*) > 1
Wenn Du die ID auch brauchst, dann sowas:
select *
from (
select id,
name,
geburtstag,
count(*) over (partition by name, geburtstag) as name_count
from patienten
) t
where name_count > 1
Alternativ kannst Du auch, das folgende nehmen (falls Du Postgres vor der Version 8.4 einsetzt), aber das ist vermutlich etwas langsamer:
select *
from patienten
where (name, geburtstag) in (
select name, geburtstag
from patienten
group by name, geburtstag
having count(*) > 1)