🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Mehrere Tabellen in einer Abfrage nutzen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
thepower
Beiträge: 7
Registriert: So 21. Okt 2012, 19:42

Mehrere Tabellen in einer Abfrage nutzen

Beitrag von thepower » So 21. Okt 2012, 20:00

Guten Tag,
versuche gerade mit LibreOffice eine Adressverwaltung zu "bauen". Mein Plan war folgender, ich nehme eine Person mit den Datenfeldern:
  • PersonID, Nachname, Vorname, Geburtsdatum, TitelID, ZusatzID
eine weiter Tabelle mit den Datenfeldern:
  • TitelID, Titel
und dann noch eine weitere Tabelle mit den Datenfeldern:
  • ZusatzID, Zusatz
die ID's sind alles fortlaufende Nummern und in der Tabelle Person wollte ich eine Abfrage basteln um zu folgendem Ergebnis zu kommen:
  • Nachname, Vorname, Titel, Zusatz
also z. b.: Else, Muster, Dr. med., jun

Wenn ich eine Abfrage baue mit nur einer Beziehung zu Zusatz oder Titel, bekomme ich ein Ergebnis. wenn ich dann versuche die verknüpfung zur dritten Tabelle herzustellen kommt immer eine Fehlermeldung... Wie muß ich die Tabellen verbinden damit er sowohl aus den Namenszusätzen und den Titeln die Infos zusammenbaut?

Vielleicht hilft's wenn ich die Fehlermeldung mit eingebe

Code: Alles auswählen

Das SQL-Kommando, welches zu diesem Fehler führte, ist:

SELECT DISTINCT "Personen"."ID" AS "ID", "Personen"."Nachname" AS "Nachname", "Personen"."Vorname" AS "Vorname", "Personen"."2. Vorname" AS "2. Vorname", "Personen"."Titel" AS "Titel", "Personen"."Geburtstag" AS "Geburtstag", "Personzusatz"."Namenszusatz" AS "Namenszusatz" FROM { OJ "Personzusatz" RIGHT OUTER JOIN "Persontitel" RIGHT OUTER JOIN "Personen" ON "Persontitel"."Titel" = "Personen"."Titel" ON "Personzusatz"."ID-Zusatz" = "Personen"."Namenszusatz" } ORDER BY "Nachname" ASC, "Vorname" ASC, "Geburtstag" ASC

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mehrere Tabellen in einer Abfrage nutzen

Beitrag von RobertG » Mo 22. Okt 2012, 16:48

Hallo,

die grafische Benutzeroberfläche kann je nach verwandter Base-Version noch Probleme mit mehrere Joins haben.
Standardmäßig funktioniert so etwas so:

Code: Alles auswählen

SELECT "Medien"."Titel", "Untertitel"."Untertitel",
"Verfasser"."Verfasser"
FROM "Medien"
LEFT JOIN "Untertitel" ON "Medien"."ID" = "Untertitel"."Medien_ID"
LEFT JOIN "rel_Medien_Verfasser" ON "Medien"."ID" =
"rel_Medien_Verfasser"."Medien_ID"
LEFT JOIN "Verfasser" ON "rel_Medien_Verfasser"."Verfasser_ID" =
"Verfasser"."ID"
Ich nutze hier "LEFT JOIN", weil dass für mich klarer aufzubauen ist. Zuerst kommt die Tabelle, von der ich alle Datensätze haben will. Im obigen Fall sollen alle Titel angezeigt werden. Also steht ganz links "Medien", weil diese Tabelle alle Titel enthält. So arbeite ich mich von der Tabelle aus mit Beziehungen zu allen anderen Tabellen vor - immer mit LEFT JOIN (Bindung zur Tabelle, die links von der Zuweisung steht).

Die grafische Benutzeroberfläche macht daraus eine Konstruktion mit geschweiften Klammern. Dein Code müsste entsprechend lauten:
thepower hat geschrieben:

Code: Alles auswählen

SELECT DISTINCT "Personen"."ID" AS "ID", "Personen"."Nachname" AS "Nachname", "Personen"."Vorname" AS "Vorname", "Personen"."2. Vorname" AS "2. Vorname", "Personen"."Titel" AS "Titel", "Personen"."Geburtstag" AS "Geburtstag", "Personzusatz"."Namenszusatz" AS "Namenszusatz" FROM "Personen" LEFT JOIN "Personzusatz" ON "Personzusatz"."ID-Zusatz" = "Personen"."Namenszusatz" LEFT JOIN "Persontitel" ON "Persontitel"."Titel" = "Personen"."Titel" ORDER BY "Nachname" ASC, "Vorname" ASC, "Geburtstag" ASC
Es gehören immer zwei betroffene Tabellen zusammen. Zu diesen muss per "ON" die Beziehung geklärt werden; dann kommt die nächste Tabelle und wieder die Klärung durch "ON". Das ist eben anders als wenn durch "FROM" erst einmal alle Tabelle aufgeführt werden und dann die Beziehungen geklärt werden. Werden mit einem Join Beziehungen geklärt, so ist entscheidend, auf welcher Seite der Beziehung die Tabelle steht, von der auf jeden Fall alle Daten gezeigt werden sollen - auch wenn die anderen Tabellen keine entsprechenden Daten enthalten.
In Deiner Abfrage waren alle Tabellen direkt hintereinander aufgeführt. Dazu hatte es einmal eine Bugmeldung gegeben. Ich meinte, dass der Bug behoben wurde. Schreibe doch einmal, mit welcher Version Du den Code erstellt hast.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

thepower
Beiträge: 7
Registriert: So 21. Okt 2012, 19:42

Re: Mehrere Tabellen in einer Abfrage nutzen

Beitrag von thepower » Mo 22. Okt 2012, 17:58

Lieber Robert,

werde direkt versuchen deinen Rat auszutesten. Ich benutze LibreOffice 3.5 mit Linux version 3.2.0-32-generic

vielen Dank

Karl

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Mehrere Tabellen in einer Abfrage nutzen

Beitrag von RobertG » Mo 22. Okt 2012, 21:39

Hallo Karl,
thepower hat geschrieben:Ich benutze LibreOffice 3.5 mit Linux version 3.2.0-32-generic
Eigentlich merkwürdig. Ich hatte den Bug hier gemeldet: https://bugs.freedesktop.org/show_bug.cgi?id=42165 , anschließend mit der 3.5.0 wieder getestet und irgendwo gemeint, dass das Gegessen wäre. Jetzt habe ich die verschiedenen Versionen hier noch einmal getestet und kann den Bug nur wieder auf machen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

thepower
Beiträge: 7
Registriert: So 21. Okt 2012, 19:42

Re: Mehrere Tabellen in einer Abfrage nutzen

Beitrag von thepower » Mo 22. Okt 2012, 23:19

Wird irgendwann gelöst werden ;)

Wenn ich den Code von Hand eingebe funtioniert die Abfrage, also sollte ich mich erst mal SQL auseinandersetzen :oops:
Gruß Karl


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten