Abfrage über 3Tabellen

Kaffeesack

Neuer Benutzer
Beiträge
2
Hallo alle miteinander,

ich bin noch Datenbankneuling, deswegen stellt folgendes Problem eine Hürde für mich da. Ich habe eine Datenbank, in der Patientendaten Dateien zugeordnet sind.

Ich habe 3Tabellen:
1.Tabelle: Patientendaten mit einer OBJECTID
2. Tabelle: Verknüpfungstabelle, Spalten sind PATIENTID und CHILDID, PATIENTID kann mehrmals vorkommen, CHILDID nur einmal
3.Tabelle: Filetabelle, jeder OBJECTID wird eine Dateiname zugeordnet.

Was ich nun gerne machen würde, ist eine Tabelle auslesen, bei der jeder Patientenname aufgelistet wird mit zugehörigen Dateinamen. Irgendwie krieg ich dafür den Knick nicht raus. Wenn ich soetwas aufführe
Code:
Select NAME,VORNAME,DATEINAME From RPOBJECTSTRUCT,RPPATIENTEN,RPDATEINAMEN WHERE (RPOBJECTSTRUCT.PATIENTID = RPPATIENTEN.OBJECTID  and NAME LIKE 'Test') and RPOBJECTSTRUCT.CHILDID = RPOBJECTSTRUCT.CHILDID";

Dann sollten maximalerweise soviele Zeilen enstehen, wie der Testpatient Dateien hat. Idealerweise krieg ichs noch hin, dass pro Patient nur eine Zeile rauskommt. Leider kommt ein zig-faches davon raus. Kann mich bitte jemand mit der Nase drauf stoßen? :)
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
´Deine Problembeschreibung past irgendwie nicht zu deinem Datenmodell. Du sagst du hast eine Datei pro Patient. Mit einer Zuordnungstabelle wie die oben beschriebene kann aber eine n:m Beziehung abgebildet werden. Das heisst ein Patient kann 1-n Dateien haben und eine Datei 1-n Patienten zugeordnet sein. Die Wahl der ID Spaltennamen würde mich veranlassen zu glauben, das es sich um eine hirachische Struktur handelt (wie z.B. Ordner auf einem Dateisystem: Ein Objekt kann mehrere Unterobjekte haben). Du wirst also immer für jede vorhandenen Eintrag in der Zuordnungstabelle eine Zeile ausgegeben bekommen, so das auch Patienten doppelt ausgeben werden können / müssen.
Code:
SELECT    NAME,
        VORNAME,
        DATEINAME
FROM    RPOBJECTSTRUCT,
        RPPATIENTEN,
        RPDATEINAMEN
WHERE    RPOBJECTSTRUCT.PATIENTID = RPPATIENTEN.OBJECTID
AND        RPOBJECTSTRUCT.CHILDID = RPOBJECTSTRUCT.CHILDID
AND        NAME LIKE 'Test'
Natürlich kann man sich hier eine Auswertung basteln, in der die Dateienamen aneinander gereiht werden. Das ist aber nicht ganz einfach (ich weiss auch nicht ob unter Access möglich). Macht auch nur Sinn, wenn Dateien nicht mehreren Patienten zugeordnet sind, was aber in deinem DB Modell vorkommen kann.
 
Werbung:

Kaffeesack

Neuer Benutzer
Beiträge
2
Hey,
danke schonmal für deien Antwort :) . Ich glaube ich hab mich schlecht ausgedrückt. Ich weiß ich hab n Dateien pro Patient. Allerdings sind die die Patienten und Dateien mit einer fortlaufenden ID gekennzeichnet, d.h.
ID Typ
1 Patient
2 Datei
3 Datei
4 Patient

usw. Die Verknüpfungstabelle sagt dann an, welche Dateien zu welchem Patienten gehören. Aber deine Aussage hilft mir schonmal weiter, dann werde ich das nämlich hier abbrechen und die Datenbank erstmal exportieren und versuchen das anders zu handeln
 
Oben