Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Select in mySQL (https://www.delphipraxis.net/43822-select-mysql.html)

hsbc 9. Apr 2005 09:46

Datenbank: mySQL • Version: 4.1 • Zugriff über: Delphi 7 Professional über API-Interface

Select in mySQL
 
Hallo

Ich habe eine Tabelle mit Artikeln, mit einem Primärindex und einem Sekundärindex. Wenn ich irgendeinen Artikel mit SELECT anwähle, wird dieser ordnungsgemäß angezeigt.

Wie kann ich jetzt die "vorherigen 20 Artikel" mit SELECT ansprechen? Geht das irgendwie mit

SELECT * FROM Artikel WHERE artnr BEFORE 12345 ???

Wie realisiert man so etwas am Besten?

mfg
Herbert

alcaeus 9. Apr 2005 09:49

Re: Select in mySQL
 
Also, wenn ich dich richtig verstanden habe dann willst du zuerst einen Artikel auswaehlen, also nehmen wir an mit der ID 12345. Nun willst du die 20 Artikel vor diesem anzeigen? In dem Fall mach das hier:
SQL-Code:
SELECT * Artikel WHERE artnr<12345 ORDER BY artnr DESC LIMIT 20
Die Reihenfolge ist zwar dann absteigend, evtl. musst du das bei der Anzeige dann wieder umdrehen. Auf die Schnelle faellt mir aber kein anderer Weg ein.

Greetz
alcaeus

hsbc 9. Apr 2005 10:57

Re: Select in mySQL
 
Hallo alcaeus,

danke vorerst mal für den Tipp, werde das gleich mal ausprobieren.

Diese SELECT-Syntax ist halt sehr umfangreich. Gibt es eigentlich eine detaillierte Beschreibung, ev. mit Beispielen für alle möglichen Situationen dafür? Momentan quäle ich mich halt mit der Online-Referenz von mysql.com ab.

Vielleicht hat noch jemand Ideen, wie man das noch machen könnte ...

mfg
Herbert

hsbc 9. Apr 2005 14:31

Re: Select in mySQL
 
Hallo alcaeus,

ich habe deinen Vorschlag nun probiert, musste aber feststellen, dass es leider nicht so funktioniert. Man kann zwar zurückblättern, so wie es gewünscht ist, jedoch beginnt dies nicht bei der übergebenden Artikelnummer, sondern bei der grössten.

Vielleicht kann sich dies doch noch ein Spezialist ansehen, ich komme hier einfach nicht weiter.

Ich möchte nichts anderes, als ab einer bestimmten Artikelnummer beginnend, die vorherigen 20 selektieren.

mfg
Herbert

alcaeus 9. Apr 2005 14:34

Re: Select in mySQL
 
:gruebel:
Mein query sollte eigentlich genau das machen. Ich waehle alle aus, deren Artikelnummer kleiner als die vorherige ist. Anschliessend beschraenke ich das Ergebnis auf die 20 mit der groessten Artikelnummer, allerdings sind die immer noch kleiner als 12345.

Greetz
alcaeus

Sharky 9. Apr 2005 14:51

Re: Select in mySQL
 
Hai alcaeus,

ich hätte das gleiche Vorgeschlagen wie Du :gruebel:
Kann es an der "Optimierung" von mySQL liegen:
Mein mySQL-Handbuch sagt

Wenn Sie LIMIT # mit ORDER BY benutzen, beendet MySQL das Sortieren, sobald er
die ersten # Zeilen gefunden hat, anstatt die gesamte Tabelle zu sortieren.

Wobei das ein schöner Bug wäre.

hsbc 9. Apr 2005 15:09

Re: Select in mySQL
 
Hallo nochmals allerseits,

bin auf den Fehler schon dahintergekommen. Hatte die Abfrage mit Variablen gestaltet und "<" mit ">" bei einer Selektion verwechselt gehabt. Funktioniert jetzt einfwandfrei. Schön wäre halt, wenn man beim Zurückblättern trotzdem die Sortierreihenfolge ansteigend haben könnte, aber dies ist nur ein kleiner Schönheitsfehler. Wichtig ist, dass es vom Prinzip her mal funktioniert.

Besten Dank nochmals an alle Beteiligten für Eure Mühe.

mfg
Herbert

alcaeus 9. Apr 2005 15:17

Re: Select in mySQL
 
Zitat:

Zitat von hsbc
Schön wäre halt, wenn man beim Zurückblättern trotzdem die Sortierreihenfolge ansteigend haben könnte, aber dies ist nur ein kleiner Schönheitsfehler.

Wie gesagt, dreh die Reihenfolge vor dem Anzeigen wieder um.

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.

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