DB2 für OS/2 Abfrage ...

(DE) Anwendungen für Office, Multimedia und Spiele, Werkzeuge, Hilfsprogramme, etc
(EN) Applications for Office, Multimedia or Games, Tools, Utilities, e.g.
Antworten
Benutzeravatar
thorolf
Beiträge: 563
Registriert: Mi 25. Dez 2013, 16:14
Wohnort: Rhein-Main

DB2 für OS/2 Abfrage ...

Beitrag von thorolf »

Hi,

macht von Euch noch jemand DB2 (also altes DB2 unter OS/2)?

Wie bekomme ich z.B. heraus, was der größte Wert in einer Spalte ist?

Also irgendwas wie:

Code: Alles auswählen

CONNECT TO Database
SELECT MAX(Num) FROM TEST_TABLE
Wobei "Num" die Spalte mit den Zahlen und TEST_TABLE die Tabelle ist, die abgefragt werden soll.

Eigentlich denke ich, das das so gehen sollte, aber bei mir "rödelt" er sich tot :-(

Könnte natürlich auch sein, das die Anbindung der externen Platte für die Datenpartition über USB2 in die VM da "etwas" bremst, sind immerhin 25 Mio Datensätze, aber irgendwie findet sich gerade kein Platz auf der internen SSD vom Laptop :-D

Und falls das nicht numerisch ist, wie geht es dann?


Vielen Dank,
Zuletzt geändert von thorolf am Di 4. Okt 2016, 18:57, insgesamt 2-mal geändert.
Grüße,

Thorolf
Benutzeravatar
ARoederer
Beiträge: 385
Registriert: Fr 27. Dez 2013, 17:25
Wohnort: Hamburg / Germany
Kontaktdaten:

Beitrag von ARoederer »

Moin

Ja, sollte so gehen.
Hast Du einen Index auf die Spalte Num gelegt? Sonst ist das kein Wunder, das die Abfrage so lange dauert.

Nach meiner Doku kannst Du MAX für alle kurzen Datentypen verwenden (also keine LONG..., BLOB, etc.).

Andreas
Benutzeravatar
thorolf
Beiträge: 563
Registriert: Mi 25. Dez 2013, 16:14
Wohnort: Rhein-Main

Beitrag von thorolf »

Hallo Andreas,

ah, jetzt ja - muss wohl doch Platz auf der SSD frei machen :-)

Hast Du auch eine Ahnung wie man ein:

SELECT * FROM tab WHERE id=123

oder

SELECT * FROM tab WHERE id LIKE="%123%" LIMIT 10

macht?

Vielen Dank,
Grüße,

Thorolf
Benutzeravatar
ARoederer
Beiträge: 385
Registriert: Fr 27. Dez 2013, 17:25
Wohnort: Hamburg / Germany
Kontaktdaten:

Beitrag von ARoederer »

Moin

SELECT * FROM tab WHERE id = '123'

SELECT * FROM tab WHERE id LIKE = '%123%' FETCH FIRST 10 ROWS ONLY
(id muss vom Typ CHAR oder VARCHAR sein.)

Andreas
Benutzeravatar
thorolf
Beiträge: 563
Registriert: Mi 25. Dez 2013, 16:14
Wohnort: Rhein-Main

Beitrag von thorolf »

Moin, moin :-)

erstmal Danke für die Antwort!
ARoederer hat geschrieben:Hast Du einen Index auf die Spalte Num gelegt? Sonst ist das kein Wunder, das die Abfrage so lange dauert.
Ich vermute, das es keinen Index für die Spalte gibt, zudem: kann man einen Index auf eine Spalte legen wo gleiche Werte vielfach vorkommen?

Wenn ja, wie legt man den bei DB2 an?
SELECT * FROM tab WHERE id = '123'
Ist ja wie bei SQL :-D

Das tut, allerdings ohne Anführungszeichen, denn die Spalte ist numerisch! Und es werden hunderte Datensätze ausgegeben.
SELECT * FROM tab WHERE id LIKE = '%123%' FETCH FIRST 10 ROWS ONLY
(id muss vom Typ CHAR oder VARCHAR sein.)
Das tut leider nicht, entweder ist der Syntax falsch oder weil es numerisch ist?

Fehler ist sinngemäß:

Code: Alles auswählen

DB2 => SELECT * FROM tab WHERE id = 12345 FETCH FIRST 10 ROWS ONLY
SQL0104N Auf "tab where id =" folgte das unerwartete Token "12345". Zu den möglichen Token gehören "<comp_op> <quantifier> <subquery>".
SQLSTATE=42601
Vielen Dank nochmal,
Grüße,

Thorolf
Benutzeravatar
aschn
Beiträge: 1363
Registriert: Mi 25. Dez 2013, 22:47

Beitrag von aschn »

Ich rate mal, ohne mich an den DB/2-SQL-Dialekt erinnern zu können: Ich kenne LIKE als Funktion, die ihre Parameter in runden Klammern erwartet, aber vermutlich ist das bei DB/2 anders.
Andreas Schnellbacher
Benutzeravatar
thorolf
Beiträge: 563
Registriert: Mi 25. Dez 2013, 16:14
Wohnort: Rhein-Main

Beitrag von thorolf »

Hallo Andreas,
aschn hat geschrieben:Ich rate mal, ohne mich an den DB/2-SQL-Dialekt erinnern zu können: Ich kenne LIKE als Funktion, die ihre Parameter in runden Klammern erwartet, aber vermutlich ist das bei DB/2 anders.
nee, bei MySQL geht das ja auch ohne Klammern, das Problem scheint auch eher die Limitierung auf die 10 Datensätze ist, was nicht funktioniert.

Aber ich mach jetzt erstmal so weiter, das brauche ich eher zum Testen ...
Grüße,

Thorolf
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag von wilfried »

SELECT * FROM tab WHERE id LIKE = '%123%' FETCH FIRST 10 ROWS ONLY

Das = nach LIKE muß weg
Antworten