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
Abfrage von mehreren Tabellen mit n:m Beziehung
Moderator: Moderatoren
-
- Beiträge: 4
- Registriert: Mi, 01.04.2015 13:25
Re: Abfrage von mehreren Tabellen mit n:m Beziehung
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.
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
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"
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
-
- Beiträge: 4
- Registriert: Mi, 01.04.2015 13:25
Re: Abfrage von mehreren Tabellen mit n:m Beziehung
Hallo Robert,
vielen Dank, ist genial;
für diese join-Geschichten bin ich wohl leider zu unstrukturiert ...
Gruß
Marcus
vielen Dank, ist genial;
für diese join-Geschichten bin ich wohl leider zu unstrukturiert ...
Gruß
Marcus