Abfrage zu komplex?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Abfrage zu komplex?

Beitrag von absti »

Hallo,

Ich erhalte bei diesem Statement
"SELECT * FROM "Tabelle" AS "Tabelle" WHERE EXTRACT(MINUTE FROM "Zeitstempel") = 5"
die Fehlermeldung:
"Die Abfrage kann nicht ausgeführt werden. Sie ist zu komplex."

Mach' ich was verkehrt?
(komme mit der Anwendung von extract/convert/cast noch nicht wirklich klar)

Ein freundliches "?" !
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

Aloha

Von der Syntax her ist das absolut OK.

Welche DB benutzt Du denn?
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Abfrage zu komplex?

Beitrag von absti »

Ahoi,

Danke für die Antwort. Greife direkt mit BASE auf csv-Dateien zu. Also keine echte Datenbank.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

Aloha

Wie viele Spalten gibt es denn in dieser Datei?

Sollten es nicht allzuviele sein, würde ich mal vermuten, dass die Timestamp-Spalte in der csv-Datei aus irgendeinem Grund nicht richtig erkannt wird.
Die WHERE-Klausel mit Überprüfung eines Wertes, der nicht errechnet(extrahiert) werden kann, ist somit nicht möglich.
Das Statement wird kurzerhand für "zu komplex" erklärt.
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Re: Abfrage zu komplex?

Beitrag von absti »

Also ca. 40 Spalten... . Ist doch "nicht allzuviele", oder?!

Die Timestamp-Spalte wurde richtig erkannt (Steht so zumindest in der Tabellendefinition). Werde morgen das ganze mit weniger Spalten probieren.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

40 Spalten sollten überhaupt kein Problem sein.

Hast Du mal versucht, ob auch das Format entsprechend anerkannt wird?

Schau mal, was Du für Ergebnisse mit

SELECT EXTRACT(MINUTE FROM "Zeitstempel") FROM "Tabelle"
(bzw. SELECT MINUTE("Zeitstempel") FROM "Tabelle")

bekommst. Dann kannst Du schonmal sehen, ob die Timestamp-Spalte tatsächlich richtig erkannt wurde.

Sollte das Ergebnis ein leeres Feld sein, müsstest Du mal das Format Deiner csv-Datei anschauen.
Zwischen den Feldtrennern und dem Feldinhalt sollte kein Leerzeichen sein.

Code: Alles auswählen

SpalteA, SpalteB, SpalteC
Wert1, Wert2, Wert3
Würde z.B. bei einem "SELECT "SpalteB" from Tabelle" leere Felder als Ergebnis bringen, da SpalteB nicht "SpalteB" heisst, sondern " SpalteB" (also mit Leerzeichen zu Beginn des Feldnamens).

Sollte dies der Fall sein, müsste Deine Abfrage folgendermassen

SELECT * FROM "Tabelle" AS "Tabelle" WHERE MINUTE(" Zeitstempel") = 5

funktionieren.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage zu komplex?

Beitrag von Barlee »

Das Problem liegt vermutlich hier:
Greife direkt mit BASE auf csv-Dateien zu. Also keine echte Datenbank.
Überführe die csv in eine Base-Tabelle und frage die Tabelle direkt ab

Gruß Barlee
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

Bei mir (Windows XP, OOo 3.1.1) funktionieren derlei Sachen auch, wenn ich die csv-Dateien direkt als Datenquelle benutze.
Das Problem muss also eigentlich woanders liegen.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage zu komplex?

Beitrag von Barlee »

Bei mir (Windows XP, OOo 3.1.1) funktionieren derlei Sachen auch, wenn ich die csv-Dateien direkt als Datenquelle benutze.
OOo 3.2 mit externer csv >> "...TOO COMPLEX" >> selbst bei 2 Spalten ??
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

Das kann ich natürlich nicht beurteilen, da ich OOo 3.2 weder kenne noch je kennenlernen werde.
Möglicherweise ist es ja tatsächlich ein Fehler, der in der neuen Version auftritt?

Aber in diesem Zusammenhang würde mich einfach mal der genaue Aufbau der csv-Datei sowie die Abfrage interessieren, die Dir diese Fehlermeldung gibt.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage zu komplex?

Beitrag von Barlee »

csv-Name: Textdatei.csv

ID;Datum;Wert
1;01.12.2010 00:03:00;5
2;05.04.2009 00:30:00;4
3;06.06.2004 00:10:00;6
4;05.07.2010 00:30:00;9
5;06.03.2005 00:45:00;8

Abfrage Standard

SELECT * FROM Textdatei WHERE EXTRACT(MINUTE FROM Datum) =10
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage zu komplex?

Beitrag von DPunch »

Tatsächlich, bei dieser Abfrage über diese Tabelle kriege ich eine "zu komplex"-Fehlermeldung.

Mit

SELECT * FROM Textdatei WHERE MINUTE(Datum) = 10

allerdings funktioniert alles wie gewünscht.

Ist für mich im Moment nicht ganz nachvollziehhbar.

Ich habe allerdings bisher auch noch nie die EXTRACT-Funktion benutzt, warum gerade diese HSQLDB in die Knie zwingt, kann ich nicht sagen.
absti
***
Beiträge: 91
Registriert: Fr, 22.04.2005 16:53

Großartig.

Beitrag von absti »

Vielen Dank. Habt mir sehr geholfen. Mit der letzen Formulierung funktioniert's!
Antworten