von eve » Sa, 05.03.2011 10:35
Hallo gogo,
Nach deinem Hinweis habe ich mich gestern intensiv in die „OUTER JOIN“ Verbindungen eingearbeitet. Ich bin ich zwar ein gutes Stück weitergekommen, aber leider bin ich noch immer nicht ganz am Ziel.
Mit den beiden Tabellen "Personen" und "Familie "habe ich folgende Abfragen erstellt:
Abfrage_Familie:
Code: Alles auswählen
SELECT "A"."PersonenID", "A"."Name", "Familie"."FamilienID", "B"."Name" AS "Ehepartner", "C"."Name" AS "Name_Kind" FROM "Personen" AS "A", "Familie", "Personen" AS "B", "Personen" AS "C"
WHERE "C"."ElternID" = "Familie"."FamilienID"
AND ( "A"."PersonenID" = "Familie"."MannID" AND "B"."PersonenID" = "Familie"."FrauID"
OR "A"."PersonenID" = "Familie"."FrauID" AND "B"."PersonenID" = "Familie"."MannID" )
Abfrage_Eltern:
Code: Alles auswählen
SELECT "Personen"."PersonenID", "Personen"."Name" AS "Name",
( SELECT "Name" FROM "Personen" WHERE "PersonenID" = "Familie"."MannID" ) AS "Vater",
( SELECT "Name" FROM "Personen" WHERE "PersonenID" = "Familie"."FrauID" ) AS "Mutter"
FROM "Personen", "Familie"
WHERE "Personen"."ElternID" = "Familie"."FamilienID"
Mit "Abfrage_all" habe ich das dann verknüpft:
Code: Alles auswählen
SELECT "A"."PersonenID", "A"."Name", "A"."ElternID", "E"."Vater", "E"."Mutter", "F"."FamilienID", "F"."Ehepartner", "F"."Name_Kind"
FROM { OJ "Abfrage_Familie" AS "F"
RIGHT OUTER JOIN "Personen" AS "A" ON "F"."PersonenID" = "A"."PersonenID"
LEFT OUTER JOIN "Abfrage_Eltern" AS "E" ON "F"."PersonenID" = "E"."PersonenID" }
ORDER BY "A"."PersonenID" ASC
Jetzt bekomme ich zwar eine Ausgabe mit allen gewünschten Spalten, bei der auch die Daten richtig zugeordnet sind, aber leider werden die Eltern nur für die Personen ausgegeben, die auch einen Ehepartner haben (also in der Tabelle Familie verzeichnet sind).
Ich habe schon alles mögliche probiert, kriege das aber einfach nicht hin. Die obige Abfrage_all ist die, mit der ich der Lösung bis jetzt nächsten gekommen bin, aber das letzte Stückchen fehlt mir leider noch. Was muss ich denn da noch ändern?
Gruß,
eve
Hallo gogo,
Nach deinem Hinweis habe ich mich gestern intensiv in die „OUTER JOIN“ Verbindungen eingearbeitet. Ich bin ich zwar ein gutes Stück weitergekommen, aber leider bin ich noch immer nicht ganz am Ziel.
Mit den beiden Tabellen "Personen" und "Familie "habe ich folgende Abfragen erstellt:
Abfrage_Familie:
[code]
SELECT "A"."PersonenID", "A"."Name", "Familie"."FamilienID", "B"."Name" AS "Ehepartner", "C"."Name" AS "Name_Kind" FROM "Personen" AS "A", "Familie", "Personen" AS "B", "Personen" AS "C"
WHERE "C"."ElternID" = "Familie"."FamilienID"
AND ( "A"."PersonenID" = "Familie"."MannID" AND "B"."PersonenID" = "Familie"."FrauID"
OR "A"."PersonenID" = "Familie"."FrauID" AND "B"."PersonenID" = "Familie"."MannID" )[/code]
Abfrage_Eltern:
[code]
SELECT "Personen"."PersonenID", "Personen"."Name" AS "Name",
( SELECT "Name" FROM "Personen" WHERE "PersonenID" = "Familie"."MannID" ) AS "Vater",
( SELECT "Name" FROM "Personen" WHERE "PersonenID" = "Familie"."FrauID" ) AS "Mutter"
FROM "Personen", "Familie"
WHERE "Personen"."ElternID" = "Familie"."FamilienID"[/code]
Mit "Abfrage_all" habe ich das dann verknüpft:
[code]
SELECT "A"."PersonenID", "A"."Name", "A"."ElternID", "E"."Vater", "E"."Mutter", "F"."FamilienID", "F"."Ehepartner", "F"."Name_Kind"
FROM { OJ "Abfrage_Familie" AS "F"
RIGHT OUTER JOIN "Personen" AS "A" ON "F"."PersonenID" = "A"."PersonenID"
LEFT OUTER JOIN "Abfrage_Eltern" AS "E" ON "F"."PersonenID" = "E"."PersonenID" }
ORDER BY "A"."PersonenID" ASC[/code]
Jetzt bekomme ich zwar eine Ausgabe mit allen gewünschten Spalten, bei der auch die Daten richtig zugeordnet sind, aber leider werden die Eltern nur für die Personen ausgegeben, die auch einen Ehepartner haben (also in der Tabelle Familie verzeichnet sind).
Ich habe schon alles mögliche probiert, kriege das aber einfach nicht hin. Die obige Abfrage_all ist die, mit der ich der Lösung bis jetzt nächsten gekommen bin, aber das letzte Stückchen fehlt mir leider noch. Was muss ich denn da noch ändern?
Gruß,
eve