Guten Tag,
ich habe 3 Tabellen:
Tabellenname: Gehege
Felder: Tier | ZahlG
Gans | 3
Huhn | 5
Ziege | 4
Tabellenname: Hof
Felder: Tier | ZahlH
Gans | 4
Pferd | 2
Tabellenname: Stall
Felder: Tier | ZahlS
Huhn | 5
Kuh | 2
Pferd | 1
Ich möchte in einer Abfrage folgendes ausgegeben haben:
Felder: Tier; ZahlT (Gesamtanzahl der jeweiligen Tiere); ZahlG; ZahlH; ZahlS
Gans | 7 | 3 | 4 | 0
Huhn | 7 | 5 | 0 | 5
Kuh | 2 | 0 | 0 | 2
Pferd | 3 | 0 | 2 | 1
Ziege | 4 | 4 | 0 | 0
Was muss ich eingeben, damit er das so ausgibt? Mein Problem ist, dass keine der Connection-Methoden zum Ziel führt.
Vielen Dank.
🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Abfrage, Tabellen kombinieren, verschiedene Spalten
Re: Abfrage, Tabellen kombinieren, verschiedene Spalten
Hallo Kriji,
Du musst zuerst einmal alle Tiere in einer Abfrage zusammen fassen. Dann kannst Du diese Abfrage als Grundlage nehmen und alle Tabellen komplett einbinden. Dies geht nur mit direktem SQL in der Abfrage oder über eine Ansicht und dann mit dem Abfrageeditor.
Entscheidend ist die Unterabfrage, die die Tabelle "T" bildet. Hier werden mit UNION alle Inhalte der Spalten "Tier" aufgelesen. Kein Wert erscheint doppelt, da nur eine Spalte abgefragt wird.
Alle anderen Tabellen sind mit einem LEFT JOIN mit "T" verbunden, so dass auf jeden Fall alle Tiere angezeigt werden.
Da es so Inhalte in Spalten geben würde, die leer bleiben, habe ich die über COALESCE mit einer 0 befüllt. Statt COALESCE kannst Du bei der HSQLDB auch IFNULL nehmen.
Die Gesamtzahl ergibt sich dann aus der Addition der einzelnen Feldinhalten.
Gruß
Robert
Du musst zuerst einmal alle Tiere in einer Abfrage zusammen fassen. Dann kannst Du diese Abfrage als Grundlage nehmen und alle Tabellen komplett einbinden. Dies geht nur mit direktem SQL in der Abfrage oder über eine Ansicht und dann mit dem Abfrageeditor.
Code: Alles auswählen
SELECT "T"."Tier",
COALESCE("Gehege"."ZahlG",0) + COALESCE("Hof"."ZahlH",0) + COALESCE("Stall"."ZahlS",0) AS "ZahlT",
COALESCE("Gehege"."ZahlG",0) AS "ZahlG",
COALESCE("Hof"."ZahlH",0) AS "ZahlH",
COALESCE("Stall"."ZahlS",0) AS "ZahlS"
FROM
(SELECT "Tier" FROM "Gehege"
UNION
SELECT "Tier" FROM "Hof"
UNION
SELECT "Tier" FROM "Stall") AS "T"
LEFT JOIN "Gehege"
ON "Gehege"."Tier" = "T"."Tier"
LEFT JOIN "Hof"
ON "Hof"."Tier" = "T"."Tier"
LEFT JOIN "Stall"
ON "Stall"."Tier" = "T"."Tier"
Alle anderen Tabellen sind mit einem LEFT JOIN mit "T" verbunden, so dass auf jeden Fall alle Tiere angezeigt werden.
Da es so Inhalte in Spalten geben würde, die leer bleiben, habe ich die über COALESCE mit einer 0 befüllt. Statt COALESCE kannst Du bei der HSQLDB auch IFNULL nehmen.
Die Gesamtzahl ergibt sich dann aus der Addition der einzelnen Feldinhalten.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Abfrage, Tabellen kombinieren, verschiedene Spalten
Lieber Robert,
vielen Dank.
vielen Dank.
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.