Hallo,
ich möchte eine Tabelle erhalten, in der alle Datensätze angezeigt werden, egal, ob bestimmte Felder belegt sind oder nicht.
Das heißt, ich habe in Citavi eine bestimmte Anzahl an Dokumenten (Büchern, Serien, Hochschulschriften usw.) erstellt, öffne das Projekt in Access und möchte eine Tabelle mit allen Titeln haben, die folgende Felder aus folgenden Tabellen beinhaltet:
Tabellenname | Feldname |
Keyword | Name |
Person | FirstName, MiddleName, LastName |
Publisher | Name |
Reference | Comment, Edition, FreeText1, FreeText2, ISBN, Language, NumberOfPages, PlacePublished, Title1, Title2, Volume, Year |
SeriesTitle | SeriesTitle.Name |
Asset | CallNumber |
Wie gesagt, nicht alle Felder haben immer einen Eintrag, da es zum Beispiel Bücher gibt, die in keiner Serie erschienen sind und nur aus einem Band bestehen.
Bisher habe ich nur eine normale Auswahlabfrage (Inner Join) erstellt, auch versucht Left und Right Join zu verwenden, was zu der Fehlermeldung Verknüpfungsausdruck nicht unterstützt führte. Leider habe ich keine besonderen Vorkenntnisse in SQL, sodass ich nicht einmal mit Sicherheit sagen kann, ob eine Left- oder Right-Join-Abfrage der richtige Ansatz wäre.
Bei den gewünschten Felder aus Citavi handelt es sich um den Datentyp Memo. Spielt das eine Rolle? (In einer Test-Datenbank mit Textfeldern allerdings hat es trotzdem nicht funktioniert.)
Vielen Dank schon mal für eure Anregungen.
Gruß Steffen
Hallo,
In der Regel ist es keine unmögliche Sache Informationen, die in verscheidenen Tabelle stehen zusammenzuführen.
Bedingung hierzu ist aber, dass die einzelnen Datensätze in den unterschiedlichen Tabellen als zusammengehörig gekennzeichnet sind.
Normalerweise passiert das über Primär- und Fremdschlüssel der betroffenen Tabellen.
In deiner Tabellenskizzierung kann ich diese nicht erkennen - wie sollen denn die Personen aus der Tabelle Person z.B einem bestimmten Titel (Title1) aus der Tabelle Reference zugeordnet werden? Worauf bezieht sich da eine erkennbare Gemeinsamkeit?
So wie du die Tabellen hier skizziert hast kannst du die Tabellen zwar einzeln abfragen aber nicht in Beziehung setzen!
Grüße
Peter
EDIT: Typo
Hallo Peter,
zuerst: danke für deine Antwort!
Die Tabellen sind durch Hilfstabellen miteinander verbunden. Ich habe nicht alle Felder aufgelistet, die in den einzelnen Tabellen sind, weil es sonst zu viele gewesen wären. (Die Tabelle Reference z.B. beinhaltet insgesamt 74 Felder.)
Es gibt zum Beispiel eine Hilfstabelle (HT) ReferencePerson, in dem die Schlüssel aus der Tabelle Reference: ReferenceID und Person: PersonID gelistet sind. So sind alle Tabellen miteinander verbunden. Im Anhang habe ich ein Screenshot hoffentlich aller relevanten Relationen beigefügt.
Vielleicht sollte ich dazu sagen, dass Citavi ein kostenfreies Literaturverwaltungsprogramm ist, welches ermöglicht eine Literatursammlung anzulegen. Wenn man ein Citavi-Projekt in Access aufruft, sind bereits alle Tabellen und eine ganze Reihe von Abfragen vorhanden, nur leider keine, die eine Liste mit den einzelnen Titeln wiedergibt, die man zuvor in das Projekt aufgenommen hat.
Wenn ich also ein Buch erfasst habe, welches keinen Autor hat, weil zu viele daran geschrieben haben, als das es unter einem Autor erfasst werden könnte, ist das Feld für diesen Datensatz in Access nachher leer. Ich möchte es aber trotzdem angezeigt bekommen, weil sich die erzeugte Tabelle mit den Feldern so einfacher in ein anderes Programm exportieren lässt (als txt).
Gruß Steffen
[Anhang gelöscht durch Administrator]
Hallo Steffen,
könntest du diese betroffenen Tabellen zusammen mit ein paar relevanten Datensätzen in eine neue Access-Datei exportieren und hier dann gezippt hochladen.
So wäre es einfacher an einer Lösung zu basteln.
Grüße
Peter
Hallo Peter,
die Daten sind anbei.
Vielen Dank für die Mühe.
Gruß Steffen
[Anhang gelöscht durch Administrator]
Hallo Steffen,
ich habe eine Abfrage erstellt, die auf 3 Unterabfragen beruht. M.E ist es nicht anders möglich alle Datensätze mit den von dir gewünschten Feldern anzuzeigen.
Starte mal die Abfrage 'QueryAll' - sollte die Ergebnisse liefern, die du möchtest.
Die relativ hohe Anzahl von scheinbaren Duplikaten lässt sich in der Abfrage nicht verhindern.
Hoffe, das ist es was du dir vorgestellt hast
Grüße
Peter
[Anhang gelöscht durch Administrator]