🙏 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. 🤗

[GELÖST] Doppeltes LEFT OUTER JOIN

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
wartburgritter
Beiträge: 101
Registriert: Di 13. Nov 2012, 18:28

[GELÖST] Doppeltes LEFT OUTER JOIN

Beitrag von wartburgritter » Fr 8. Mär 2013, 20:57

Meine Projektdatenbank wächst und nun stehe mal wieder vor einem Problem. In Idiotenlaiensprache würde ich sagen, ich will ein doppeltes LEFT OUTER JOIN machen, sozusagen über zwei Tabellen, sonst hab ich nur die ID in der Abfrage. Ich versuche mal das vereinfacht zu erläutern. Hab dazu die Abragen meiner Tabellen stark vereinfach hier eingefügt. Evtl. kann mir ja jemand helfen oder einen Tip geben wo ich mich schlau machen kann.

Ich habe eine Tabelle Projektliste, und einige Spalten verweisen auf andere Tabellen. Eine einfache Abfrage sieht so aus:

SELECT
"Ort"."Ort" AS "_____Ort_____",
"Projektliste"."ProjektBezeichnung" AS "ProjektBezeichnung",
"Projektliste"."ProjektArchivNummer" AS "PrjArchivNr"

FROM
{ OJ "Projektliste"
LEFT OUTER JOIN "Ort" ON "Projektliste"."OrtID" = "Ort"."ID"
}

ORDER BY
"Ort" ASC,
"ProjektBezeichnung" ASC

So weit so gut nichts besonderes. Habe weiterhin eine Tabelle Projektfirmen in der ich den Projekten Firmen zuordne. Die Firmen stehen aber wieder in einer weiteren Tabelle. Eine einfache Abfrage der Projektfirmen sieht so aus:

SELECT
"Firmen"."Firmenname" AS "___Firemenname___",
"Projektliste"."ProjektBezeichnung" AS "__ProjektBezeichnung__"

FROM
{ OJ "Projektfirmen"
LEFT OUTER JOIN "Firmen" ON "Projektfirmen"."FirmaID" = "Firmen"."ID"
LEFT OUTER JOIN "Projektliste" ON "Projektfirmen"."ProjektID" = "Projektliste"."ID"
}

ORDER BY
"Firmenname" ASC,
"ProjektBezeichnung" ASC

Soweit auch gut. Dort habe ich aber nur die zugeordneten Firmen drin. Nun möchte ich eine Projektliste ALLER Projekte mit Firmen haben (auch wenn einem Projekt keine Firma oder mehrere Firmen zugeordnet sind). Basis muss ja dann die Projektliste sein. Folgende Abfrage liefert mir die FirmenID in der Abfrage, ich will natürlich nicht die ID sondern den Namen stehen haben, der steht dann aber "noch eine Tabelle weiter".

SELECT
"Ort"."Ort" AS "_____Ort_____",
"Projektliste"."ProjektBezeichnung" AS "ProjektBezeichnung",
"Projektliste"."ProjektArchivNummer" AS "PrjArchivNr",
"Projektfirmen"."FirmaID" AS "___Firemenid___"

FROM
{ OJ "Projektliste"
LEFT OUTER JOIN "Ort" ON "Projektliste"."OrtID" = "Ort"."ID"
LEFT OUTER JOIN "Projektfirmen" ON "Projektliste"."ID" = "Projektfirmen"."ProjektID"
}

ORDER BY
"Ort" ASC,
"ProjektBezeichnung" ASC

Also nun die Gretchenfrage. Wie bekomme ich den Firmennamen anstatt der FirmaID in meine Projektlistenabfrage? Schwierig, schwierig, sieht überhaupt jemand durch was ich will. Hatte letztens einen aufden Kopf stehenden Smilie der würde grad passen. :)

gruss bernd
Zuletzt geändert von wartburgritter am Fr 8. Mär 2013, 23:03, insgesamt 1-mal geändert.

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

Re: Doppeltes LEFT OUTER JOIN

Beitrag von RobertG » Fr 8. Mär 2013, 21:20

Hallo Bernd,

Code: Alles auswählen

SELECT
"Ort"."Ort" AS "_____Ort_____",
"Projektliste"."ProjektBezeichnung" AS "ProjektBezeichnung",
"Projektliste"."ProjektArchivNummer" AS "PrjArchivNr",
"Projektfirmen"."FirmaID" AS "___Firemenid___",
"Firmen"."Firmenname" AS "___Firemenname___"

FROM
"Projektliste"
LEFT JOIN "Ort" ON "Projektliste"."OrtID" = "Ort"."ID"
LEFT JOIN "Projektfirmen" ON "Projektliste"."ID" = "Projektfirmen"."ProjektID"
LEFT JOIN "Firmen" ON "Projektfirmen"."FirmaID" = "Firmen"."ID" 

ORDER BY
"Ort" ASC,
"ProjektBezeichnung" ASC
Vielleicht so mit 3 Left Joins?

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

wartburgritter
Beiträge: 101
Registriert: Di 13. Nov 2012, 18:28

Re: Doppeltes LEFT OUTER JOIN

Beitrag von wartburgritter » Fr 8. Mär 2013, 21:51

:D :D :D

Hab die Abfrage einfach nur kopiert und er zeigt GENAU an was ich brauche. Es gab nicht mal einen SQL-Fehler, nix sofort die Abfrageerbebnisse angezeigt mit NAMEN. Das gibt mir die Idee wie es funktioniert. So werd mir den Code mal ansehen und versuchen in die reele Struktur meiner DB zu integrieren, in der bspw. noch eine Projektaufgabe und weiter Elemente hinzukommen.

gruss bernd

ps. musste grad sofort antworten :) :) :)

wartburgritter
Beiträge: 101
Registriert: Di 13. Nov 2012, 18:28

Re: [GELÖST] Doppeltes LEFT OUTER JOIN

Beitrag von wartburgritter » Fr 8. Mär 2013, 23:05

Das gibt mal ein ganz klares gelöst. Soeben in meine Struktur integriert. Es werden sogar schön die projekte mit mehreren firmen mehrmals angezeigt. So nun muss ich meine Daten abfüllen. Hab gerade noch ne idee bekommen, aber da gibt es einen extra thread.

gruss bernd


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