Abfrage für Bericht zusammenfassen
Verfasst: Do, 05.07.2018 22:33
Moin,
ich bin neu bei OpenOffice und versuche mich an meiner ersten Datenbank. Die Tabellen und Formulare sind erstellt und funktionieren nach meinen Vorstellungen. Nun möchte ich dazu einen Bericht erstellen wie in "Beispiel_Bericht_Rechnung.odb" aus den Beispieldatenbanken Handbuch V60, wo die komplette Adresszeile einer Tabelle zu einem Feld in einer Abfrage zusammengefasst wird.
Die Abfrage aus dem oben genannten Beispiel schaut so aus und mich interessiert, wie das Feld "Kunde" zustande kommt.
SELECT MIN( "ID" ) "ID", SUM( "Anzahl" ) "Anzahl", "Rechnung_ID", "Ware_ID", "Datum", "Ware", "Preis", "Preis" * ( SELECT SUM( "Anzahl" ) FROM "Verkauf" WHERE "Ware_ID" = "a"."Ware_ID" AND "Rechnung_ID" = "a"."Rechnung_ID" ) "Anzahl*Preis", ( SELECT SUM( "Preis" * "Anzahl" ) FROM "Ware", "Verkauf" WHERE "Verkauf"."Rechnung_ID" = "a"."Rechnung_ID" AND "Ware"."ID" = "Verkauf"."Ware_ID" ) "Summe",
( SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "Postleitzahl" || ' ' || "Ort" FROM "Kunde", "Rechnung" WHERE "Kunde"."ID" = "Rechnung"."Kunde_ID" AND "Rechnung"."ID" = "a"."Rechnung_ID" ) "Kunde", ( SELECT YEAR( "Datum" ) || '-' || "ID" FROM "Rechnung" WHERE "ID" = "a"."Rechnung_ID" ) "Rechnungsnummer" FROM "Verkauf" AS "a", "Rechnung", "Ware" WHERE "Rechnung_ID" = IFNULL( ( SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE ), "Rechnung_ID" ) AND "Rechnung_ID" = "Rechnung"."ID" AND "Ware_ID" = "Ware"."ID" GROUP BY "Rechnung_ID", "Ware_ID", "Datum", "Ware", "Preis"
Ich habe mir zum testen zwei Abfragen erstellt, die einzeln für sich auch funktionieren:
Tabelle "Fahrzeuge" mit den Feldern "ID" "Hersteller" "Modell" "Adressen_ID"
Tabelle "Adressen" mit den Feldern "ID" "Anrede" "Vorname" "Nachname" "Straße" "PLZ" "Ort"
SELECT "Hersteller", "Modell" FROM "Fahrzeuge"
SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "PLZ" || ' ' || "Ort" FROM "Adressen", "Fahrzeuge" WHERE "Adressen"."ID" = "Fahrzeuge"."Adressen_ID"
Kombiniere ich diese beiden wie im obigen Beispiel, bekomme ich eine Fehlermeldung: Single value expected in Statement...
SELECT "Hersteller", "Modell", (SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "PLZ" || ' ' || "Ort" FROM "Adressen", "Fahrzeuge" WHERE "Adressen"."ID" = "Fahrzeuge"."Adressen_ID") "Kunde" FROM "Fahrzeuge"
Die Beispielabfrage funktioniert auf meinem System, meine beiden zusammengelegten Abfragen leider nicht. Kann mir jemand helfen und mir einen stubs in die Richtige Richtung geben?
Ich benutze AOo 4.1.5 mit Java 1.8.0_172 unter Windows 10
ich bin neu bei OpenOffice und versuche mich an meiner ersten Datenbank. Die Tabellen und Formulare sind erstellt und funktionieren nach meinen Vorstellungen. Nun möchte ich dazu einen Bericht erstellen wie in "Beispiel_Bericht_Rechnung.odb" aus den Beispieldatenbanken Handbuch V60, wo die komplette Adresszeile einer Tabelle zu einem Feld in einer Abfrage zusammengefasst wird.
Die Abfrage aus dem oben genannten Beispiel schaut so aus und mich interessiert, wie das Feld "Kunde" zustande kommt.
SELECT MIN( "ID" ) "ID", SUM( "Anzahl" ) "Anzahl", "Rechnung_ID", "Ware_ID", "Datum", "Ware", "Preis", "Preis" * ( SELECT SUM( "Anzahl" ) FROM "Verkauf" WHERE "Ware_ID" = "a"."Ware_ID" AND "Rechnung_ID" = "a"."Rechnung_ID" ) "Anzahl*Preis", ( SELECT SUM( "Preis" * "Anzahl" ) FROM "Ware", "Verkauf" WHERE "Verkauf"."Rechnung_ID" = "a"."Rechnung_ID" AND "Ware"."ID" = "Verkauf"."Ware_ID" ) "Summe",
( SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "Postleitzahl" || ' ' || "Ort" FROM "Kunde", "Rechnung" WHERE "Kunde"."ID" = "Rechnung"."Kunde_ID" AND "Rechnung"."ID" = "a"."Rechnung_ID" ) "Kunde", ( SELECT YEAR( "Datum" ) || '-' || "ID" FROM "Rechnung" WHERE "ID" = "a"."Rechnung_ID" ) "Rechnungsnummer" FROM "Verkauf" AS "a", "Rechnung", "Ware" WHERE "Rechnung_ID" = IFNULL( ( SELECT "Integer" FROM "Filter" WHERE "ID" = TRUE ), "Rechnung_ID" ) AND "Rechnung_ID" = "Rechnung"."ID" AND "Ware_ID" = "Ware"."ID" GROUP BY "Rechnung_ID", "Ware_ID", "Datum", "Ware", "Preis"
Ich habe mir zum testen zwei Abfragen erstellt, die einzeln für sich auch funktionieren:
Tabelle "Fahrzeuge" mit den Feldern "ID" "Hersteller" "Modell" "Adressen_ID"
Tabelle "Adressen" mit den Feldern "ID" "Anrede" "Vorname" "Nachname" "Straße" "PLZ" "Ort"
SELECT "Hersteller", "Modell" FROM "Fahrzeuge"
SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "PLZ" || ' ' || "Ort" FROM "Adressen", "Fahrzeuge" WHERE "Adressen"."ID" = "Fahrzeuge"."Adressen_ID"
Kombiniere ich diese beiden wie im obigen Beispiel, bekomme ich eine Fehlermeldung: Single value expected in Statement...
SELECT "Hersteller", "Modell", (SELECT "Anrede" || CHAR( 13 ) || "Vorname" || ' ' || "Nachname" || CHAR( 13 ) || "Straße" || CHAR( 13 ) || "PLZ" || ' ' || "Ort" FROM "Adressen", "Fahrzeuge" WHERE "Adressen"."ID" = "Fahrzeuge"."Adressen_ID") "Kunde" FROM "Fahrzeuge"
Die Beispielabfrage funktioniert auf meinem System, meine beiden zusammengelegten Abfragen leider nicht. Kann mir jemand helfen und mir einen stubs in die Richtige Richtung geben?
Ich benutze AOo 4.1.5 mit Java 1.8.0_172 unter Windows 10