[GELÖST] Doppeltes LEFT OUTER JOIN
Verfasst: 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
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