Abfrage von mehreren Tabellen mit n:m Beziehung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

sigma_user
Beiträge: 4
Registriert: Mi, 01.04.2015 13:25

Abfrage von mehreren Tabellen mit n:m Beziehung

Beitrag von sigma_user »

Hallo,
ich stehe vor folgendem Problem:
ich habe eine Datenbank in welcher Objekte verwaltet werden, welche mit unterschiedlichen Dokumentationsverfahren dokumentiert werden.
D.h. OBJ wird dokumentiert mit FOTO MESSBILD ZEICHNUNG
Dafür habe ich jeweils eine Tabelle OBJ, FOTO, MESSBILD, ZEICHNUNG erstellt
Da nun zwischen jedem OBJ und der jeweiigen Dokumentationsart eine n:m Beziehung besteht, werden die Tabellen verknüpft über
Verknüpfungstabellen OBJ_FOTO, OBJ_MESSBILD, OBJ_ZEICHUNG; jede dieser Tabellen enthält lediglich als Foreignkey die ID der angehängten Tabellen.

Soweit so gut, auffüllen der Datenbanken funktioniert, Formulare erstellen auch, einfache Abfragen wie z.B. OBJ zu MESSBILD ebenfalls.

Ich benötige nun aber eine Abfrage mit welcher alle Dokumente zu jeweils allen OBJ erstellt wird. Hier scheitere ich an meinen SQL-Kenntnissen:
ich habe es versucht mit JOIN etc. entweder bekomme ich elend lange Listen welche mir alle Kombinationsvariationen aufzeichen ....
oder aber anderes Extrem - es werden mir nur die OBJ angezeigt für die auch Dokumente vorliegen.
Leider ist es aber so, dass nicht für alle OBJ alle Dokumentationsarten vorliegen, oder eben noch nachgeholt werden müssten; und genau die Lücken würde ich gerne in einer Gesamtliste sehen.

Vielleicht kann mir hier im Forum jemand helfen, oder einen Tip geben wo ich suchen kann; bin mit Hilfe der bei Google aufgefundenen Tutorials nicht wirklich weiter gekommen, da auch die SQL-Syntax bei Base wohl etwas anders ist (z.B. Verwendung von Klammern, hab ich nicht verstanden).

Vielen Dank für Eure Vorschläge
Marcus
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage von mehreren Tabellen mit n:m Beziehung

Beitrag von RobertG »

Hallo Marcus,

mit der GUI ist das für mich sehr schwer zu erklären. Das Ganze läuft mit einem LEFT JOIN, wobei die Tabelle OBJ zuerst stehen muss.

Code: Alles auswählen

SELECT "OBJ".*, "FOTO".*, "MESSBILD".*, "ZEICHNUNG".* 
FROM "OBJ" 
LEFT JOIN "OBJ_FOTO" ON "OBJ"."ID" = "OBJ_FOTO"."OBJ_ID" 
LEFT JOIN "FOTO" ON  "OBJ_FOTO"."FOTO_ID" = "FOTO"."ID" 
LEFT JOIN "OBJ_MESSBILD"  ON "OBJ"."ID" = "OBJ_MESSBILD"."OBJ_ID" 
LEFT JOIN "MESSBILD" ON  "OBJ_MESSBILD"."MESSBILD_ID" =  "MESSBILD"."ID" 
LEFT JOIN "OBJ_ZEICHUNG" ON "OBJ"."ID" =  "OBJ_ZEICHNUNG"."OBJ_ID"
LEFT JOIN "ZEICHNUNG" ON "OBJ_ZEICHNUNG"."ZEICHNUNG_ID" = "ZEICHNUNG"."ID"
Ich bin dabei immer davon ausgegangen, dass der Primärschlüssel "ID" heißt und habe entsprechend in den Verbindungtabellen den Namen mit aufgeführt.

Wenn Du die Abfrage eingibst, dann mach das im direkten SQL-Modus. Falls Du nichts anderes damit vor hast (Parameterabfrage?), dann lass auch den Button für die direkte SQL-Ausführung anschließend gedrückt. Dann bleibt der Code sauber geordnet. Die GUI schreibt das alles in eine Zeile und setz noch geschweifte Klammern an allen möglichen Stellen ...

Gruß

Robert
sigma_user
Beiträge: 4
Registriert: Mi, 01.04.2015 13:25

Re: Abfrage von mehreren Tabellen mit n:m Beziehung

Beitrag von sigma_user »

Hallo Robert,
vielen Dank, ist genial;
für diese join-Geschichten bin ich wohl leider zu unstrukturiert ...

Gruß
Marcus
Antworten