Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrage über 3Tabellen

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Kaffeesack, 4 September 2012.

  1. Kaffeesack

    Kaffeesack Neuer Benutzer

    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? :)
     
  2. ukulele

    ukulele Datenbank-Guru

    ´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.
     
  3. Kaffeesack

    Kaffeesack Neuer Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden