Seite 1 von 1
Verfasst: 11.03.2007, 16:12
von mirko
Ohne die Tabellen genau zu sehen kann ich da keinen Tipp geben. Einfacher ist es erstmal die Abfragen einzeln zu machen, also sich aufzuschreiben. Danach schaut man sich das Ergebnis an und schaut welche JOIN-Variante (INNER, LEFT, RIGHT, FULL) das gewünschte Ergebnis bringt. Man kann auch ganz auf die Joins verzichten und die Tabellen über mehrere SELECT\'s verknüpfen, das dauert dann alles länger aber beim Import spielt das sowieso keine Rolle.
Verfasst: 11.03.2007, 13:10
von vonkom
Hallo zusammen,
ich möchte mit dem Supermailer auf Daten aus einer Personaldatenbank zugreifen.
Die Verbindung zur DB per OLE herzustellen und der Zugriff auf Tabellen und Felder klappt auch hevorragend.
Nun zu meinem Problem:
Ich möchte alle Privaten E-Mail Adressen und Abteilungszugehörigkeit zusammen mit Name und Vorname in Supermailer importieren. Diese Daten sind jedoch in der DB über mehrere Tabellen verteilt:
In der Tabelle PV_DB sind Stammdaten wie Name (NAME), Vorname (VORNAME) und eine eindeutige Personalnummer (PV_LFD_NR) hintelegt.
In einer weiteren Tabelle PV_ABT findet sich wieder die eindeutige Personalnummer (PV_LFD_NR) und die Abteilung (ABTEILUNG). Es können hier mehrere Abteilungen zu einer Person gehören!!!
In einer weiteren Tabelle PV_ERR findet sich wieder die eindeutige Personalnummer (PV_LFD_NR) und die E-Mail Adresse (EMAIL). Es können hier mehrere Datensätze zu einer Person abgelegt sein. Und zwar dienstliche und private E-Mail Adressen (Feld: PV_ERR_TYP mit Werten \"privat\" oder \"dienstlich\").
Meine SQL Abfrage sieht folgendermaßen aus:
SELECT * FROM(
(pv_err INNER JOIN PV_abt on PV_ABT.PV_LFD_NR = PV_err.PV_LFD_NR)
INNER JOIN pv_db on pv_err.pv_lfd_nr = pv_db.pv_lfd_nr)
where pv_telep.tel_art = \"e-mail privat\"
and pv_db.abteilung=\"Abteilung 1\"
In einer Zweiten Abfrage will ich nach Abteilung 2 importieren. Es wird aber nur der erste Datensatz in PV_ABT der jeweiligen Person ausgegeben.
Habe ich einen Fehler bei den INNER JOIN\'s gemacht, oder hat jemand vielleicht eine bessere Idee?
Gruß Stefan