Abfrage Funktion Fehlermeldung: Dateninhalte konnten nicht .

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

phil.myer
Beiträge: 4
Registriert: Mi, 15.08.2012 16:56

Abfrage Funktion Fehlermeldung: Dateninhalte konnten nicht .

Beitrag von phil.myer »

hi zusammen,

ich habe eine Abfrage erstellt, sobald ich bei der Funktion z.B. die Summe einer Spalte ausgeben lassen will erscheint folgende Fehlermeldung: "Die Dateninhalte konnten nicht geladen werden. Not in aggregate function or group by clause: org.hsqldb.Expression@11456c5 in statement [SELECT "ID", "Landuse", "IDn", SUM("Area"), "Residential", "Industrial" FROM "FreiburgNeu2"]
mac-Version
3.3.0
OOO330M20 (Build: 9567)

Weiss hierzu jemand mehr?
Mach ich hier einen blöden Anfängerfehler?

Bin über jeden Hinweis sehr dankbar,
beste Grüsse und vielen Dank im Voraus,
phil
Fehlermeldung.png
Fehlermeldung.png (103.41 KiB) 1301 mal betrachtet
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage Funktion Fehlermeldung: Dateninhalte konnten nic

Beitrag von RobertG »

Hallo Phil,

blöde Fehler gibt es nicht. Fehler sind dazu da gemacht zu werden, damit Du und alle anderen daraus lernen.

Wenn Du

Code: Alles auswählen

SELECT SUM("Area") FROM "FreiburgNeu2"
eingibst, dann wird die Abfrage funktionieren. Aber willst Du wirklich alles zusammenzählen?
Wenn Du

Code: Alles auswählen

SELECT SUM("Area"), "Industrial" FROM "FreiburgNeu2" GROUP BY "Industrial"
eingibst, werden immer die Werte aus "Area" aufsummiert, die den gleichen Eintrag bei "Industrial" haben.
Die Funktion SUM() braucht also bei anderen Feldern in der Abfrage jeweils eine Gruppierung. Womit ich beim Original Deiner Abfrage bin:

Code: Alles auswählen

SELECT "ID", "Landuse", "IDn", SUM("Area"), "Residential", "Industrial" FROM "FreiburgNeu2"
Hier fehlen die Gruppierungen für "ID", "Landuse" usw. - machen aber auch vermutlich keinen Sinn, da ich hinter dem Feld "ID" den Primärschlüssel vermute. Und der Primärschlüssel ist nun einmal einzigartig. Da kann dann auch keine Summe über irgendetwas noch gebildet werden.
Du musst Dir also überlegen: Von welchem Bereich möchte ich die Summe haben? Danach muss ich gruppieren und alle anderen Bereiche haben in der Abfrage nichts zu suchen. Oder will ich etwa wirklich die Gesamtsumme haben. Dann geht das so:

Code: Alles auswählen

SELECT "ID", "Landuse", "IDn", (SELECT SUM("Area") FROM "FreiburgNeu2") AS "Areasumme", "Residential", "Industrial" FROM "FreiburgNeu2"
Du würdest also eine Abfrage in eine andere Abfrage einbauen. Das geht nur, wenn die Abfrage einen eindeutigen Wert liefert.

Gruß

Robert
phil.myer
Beiträge: 4
Registriert: Mi, 15.08.2012 16:56

SELECTs verbinden, Export nach .calc, .txt

Beitrag von phil.myer »

hallo robert,
vielen Dank für die ausführlichen Infos! Diese bringen mich schon ein Stück weiter.

Die Abfrage soll für die Spalten "Residential" und "Industrial" die aufsummierten Werte nach den IDn wiedergeben, so dass die Abfrage folgendermassen aussehen würde:

SUM ("FreiburgNeu2"."Industrial")/SUM("FreiburgNeu2"."Residential")/IDn
30/20/1
10/20/2
.../.../3
.../.../4 usw.

//Die ursprüngliche Tabelle "FreiburgNeu2" sieht folgendermassen aus (Spalte: Residential und Industrial beinhalten die Fläche von Area, Spalte Area ist eigentlich überflüssig):

ID/Landuse/IDn/Area/Residential/Industrial/
1/industrial/1/10/0/10
2/indutrial/1/20/0/20
3/residential/1/20/20/0
4/residential/2/10/10/0
5/residential/2/10/10/0
6/indutrial/2/10/0/10
//

SELECT SUM("Industrial"), "IDn" FROM "FreiburgNeu2" GROUP BY "IDn"
-->liefert die aufsummierten Werte nach IDn für die Spalte "Industrial"

SELECT SUM( "Residential" ), "IDn" FROM "FreiburgNeu2" GROUP BY "IDn"
-->-->liefert die aufsummierten Werte nach IDn für die Spalte "Residential"

1. Wie kann ich die beiden SELECT's verbinden, dass ich das Ergebnis ein einer Abfrage hinkriege?
Oder geht dies so gar nicht?

Mehrere Versuche sind fehlgeschlagen: z.B.:
-die beiden SELECT's einfach mit einem Komma verbinden:
SELECT SUM("Industrial")FROM "FreiburgNeu2" GROUP BY "IDn", SELECT SUM("Residential") FROM "FreiburgNeu2" GROUP BY "IDn"
oder
SELECT "Landuse",(SELECT SUM("Industrial")FROM "FreiburgNeu2" GROUP BY "IDn"), (SELECT SUM("Residential") FROM "FreiburgNeu2" GROUP BY "IDn") FROM "FreiburgNeu2"

2. Danach möchte ich die Abfrage nach .calc oder .txt exportieren, um die Daten ins Geographische Informationssystem (QGIS) einzulesen zu können.
Geht der Export nur über ein Formular?

Über eine Antwort wäre ich sehr froh.
Beste Grüsse
phil
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage Funktion Fehlermeldung: Dateninhalte konnten nic

Beitrag von RobertG »

Hallo Phil,

warum nicht beide direkt zusammenfassen?
SELECT SUM("Industrial"), "IDn" FROM "FreiburgNeu2" GROUP BY "IDn"
SELECT SUM( "Residential" ), "IDn" FROM "FreiburgNeu2" GROUP BY "IDn"
Wird zusammen zu
SELECT SUM("Industrial"), SUM( "Residential" ), "IDn" FROM "FreiburgNeu2" GROUP BY "IDn"

Das Feld, das nicht mit einer Funktion abgefragt wird, wird in der Gruppierung berücksichtigt. Es gahen also auch mehrere Funktionen in einer Abfrage.

Gruß

Robert
phil.myer
Beiträge: 4
Registriert: Mi, 15.08.2012 16:56

Re: Abfrage Funktion Fehlermeldung: Dateninhalte konnten nic

Beitrag von phil.myer »

hallo robert,

ja klar so muss es sein! Herzlichen Dank für die Rückmeldungen, hat mir sehr viel gebracht und so langsam beginne ich dank Deinen Hinweisen die Logik von den SQL-Befehlen zu verstehen, merci vielmals.

Momentan plagt mich nur noch wie ich die Resultat als .calc oder .txt exportieren kann, damit ich die lange Ausgabeliste von jeweils ca. 120 IDn nicht von Hand ins Geographische Informationssystem übertragen muss. Speziell, da bei jeder Änderung die Daten von Hand wieder zu ändern wären.

Zum Export habe ich folgendes gefunden:
-1. Formular erstellen und öffnene, 2. Datei>senden: →leider stehen dort keine .txt oder .calc-Dateien zur Verfügung
-2. Base-Abfrage in .Calc ausgeben (über ein Makro):
viewtopic.php?f=18&t=41421

Ist der oben unter Punkt 2 (über ein Makro) erwähnte Export die einzige Möglichkeit?
... ui, da habe ich absolut keine Erfahrung. Scheint ja nicht gerade einfach zu werden ;(

Vielleicht hast Du zum Export der Abfrage nach .calc oder .txt eine Idee oder selbst Erfahrungen gesammelt?

Werde noch etwas im Forum rumsuchen vielleicht gibt’s eine einfachere Variante/Möglichkeit des Exportes?

Jedenfalls möchte ich mich für Deine lehrreichen und ausführlichen Informationen herzlichst bedanken.
phil
phil.myer
Beiträge: 4
Registriert: Mi, 15.08.2012 16:56

export nach .calc

Beitrag von phil.myer »

hallo robert,
ich hab nun doch eine einfache Variante gefunden die Abfrage in .calc zu exportieren:
1. ein leeres .calc-Dokument öffnen
2. das Abfrage Icon "Name der Abfrage: z.B. "IndustrialResidential" einfach in eine Zelle des leeren .calc-Dokumentes ziehen
-->et voilà die Abfrage-Daten sind im .calc :)

Aber das hast Du sicherlich schon gewusst...

Beste Grüsse
phil
Antworten