Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage nach dem größten Wert (https://www.delphipraxis.net/58266-sql-abfrage-nach-dem-groessten-wert.html)

Hansi 4. Dez 2005 14:40

Datenbank: MySQL • Version: 4.1 • Zugriff über: ZEOS

SQL Abfrage nach dem größten Wert
 
Hey,

Ich möchte gerne aus der Tabelle Artikel die höchste und somit die letzte Artikelnummer abfragen (Was ich nicht bevorzuge ist eine Schleife um jede einzelne Artikelnummer abzufragen). Die Schwierigkeit dabei ist:

Artikelnummer-Feld ist VarChar(15), kann also so heissen: GRA-001, 001-001, 001001
im SELECT muss dann wahrscheinlich folgendes Vorkommen: WHERE ARTNR LIKE "'+Variable+'-'+'%"; Die Variable sind die Zeichen(Zahlen und Buchstaben) vor dem Bindestrich.

Mit "SELECT MAX(ARTNR) FROM ARTIKEL" bekomme ich den höchsten Wert von Integer Zahlen, nur wie mache ich das in meinem Bsp?

Könnt Ihr helfen?

marabu 4. Dez 2005 15:00

Re: SQL Abfrage nach dem größten Wert
 
Hallo Hansi,

du hast also deine ArtikelNummer aus ArtikelGruppe, einem Minus als Trennzeichen und einer fortlaufenden Nummer zusammengesetzt und suchst die höchste Nummer für eine bestimmte Artikelgruppe?

SQL-Code:
SELECT MAX(CAST(SUBSTRING_INDEX(ArtikelNummer, '-', -1) AS UNSIGNED)) AS MaxNummer
FROM Artikel
WHERE ArtikelNummer LIKE 'GRA-%'
Wenn wir Glück haben funktioniert das.

Vorweihnachtliche Grüße vom marabu

Hansi 4. Dez 2005 15:34

Re: SQL Abfrage nach dem größten Wert
 
Hallo marabu,

Leider funktioniert es noch nicht ganz.

Hier mein Code:
Delphi-Quellcode:
ZQ_Art_Suche.SQL.Clear;
ZQ_Art_Suche.SQL.Add('SELECT MAX(CAST(SUBSTRING_INDEX(ARTNR, '-', -1) AS UNSIGNED)) AS MaxNummer FROM ARTIKEL WHERE ARTNR LIKE "'+kre_art_pf+'-'+'%"');
ZQ_Art_Suche.Open;
kre_art_pf entspricht der Stringvariablen "001"

Fehler lautet bei hinteren LIKE Operatot ist auf diesen Operatortyp nicht anwendbar!

Weisst Du Rat?

Edit:

Also diese Abfrage funktioniert:
Delphi-Quellcode:
ZQ_Art_Suche.SQL.Clear;
ZQ_Art_Suche.SQL.Add('SELECT ARTNR FROM ARTIKEL WHERE ARTNR LIKE "'+kre_art_pf+'-'+'%"');
ZQ_Art_Suche.Open;
ShowMessage('Anzahl der gefundenen Artikel:'+IntToStr(ZQ_Art_Suche.RecordCount));
Bringt das mir/Dir was?

DelphiDeveloper 4. Dez 2005 16:22

Re: SQL Abfrage nach dem größten Wert
 
Zitat:

ZQ_Art_Suche.SQL.Clear;
ZQ_Art_Suche.SQL.Add('SELECT ARTNR FROM ARTIKEL WHERE ARTNR LIKE "'+kre_art_pf+'-'+'%"');
ZQ_Art_Suche.Open;
ShowMessage('Anzahl der gefundenen Artikel:'+IntToStr(ZQ_Art_Suche.RecordCount));
ich würde es mal so versuchen

Zitat:

ZQ_Art_Suche.SQL.Clear;
ZQ_Art_Suche.SQL.Add('SELECT ARTNR FROM ARTIKEL WHERE ARTNR LIKE ' + QuotedStr(kre_art_pf+'-%') ') ;
ZQ_Art_Suche.Open;
ShowMessage('Anzahl der gefundenen Artikel:'+IntToStr(ZQ_Art_Suche.RecordCount));

marabu 4. Dez 2005 17:15

Re: SQL Abfrage nach dem größten Wert
 
Hansi, was soll ich sagen - bei mir läufts so wie gepostet, wenn ich es im MySQL-Browser direkt verwende. Sollte es an den ZEOS Komponenten liegen?

marabu

Hansi 5. Dez 2005 18:59

Re: SQL Abfrage nach dem größten Wert
 
Halllo marabu,

Du hast Recht in meinem SQL Manager tut Dein SQL-Befehl auch. Muss mal schaun wo bei mir der Fehler liegt!

Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz