Seite 1 von 1

Abfrage zu komplex?

Verfasst: Di, 23.03.2010 11:29
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 "?" !

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 13:48
von DPunch
Aloha

Von der Syntax her ist das absolut OK.

Welche DB benutzt Du denn?

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 13:58
von absti
Ahoi,

Danke für die Antwort. Greife direkt mit BASE auf csv-Dateien zu. Also keine echte Datenbank.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 15:46
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.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 17:04
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.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 18:25
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.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 19:12
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

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 19:39
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.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 20:20
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 ??

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 20:25
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.

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 21:06
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

Re: Abfrage zu komplex?

Verfasst: Di, 23.03.2010 21:27
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.

Großartig.

Verfasst: Mi, 24.03.2010 08:59
von absti
Vielen Dank. Habt mir sehr geholfen. Mit der letzen Formulierung funktioniert's!