![]() |
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 |
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:
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.
SELECT * Artikel WHERE artnr<12345 ORDER BY artnr DESC LIMIT 20
Greetz alcaeus |
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 |
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 |
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 |
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. |
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 |
Re: Select in mySQL
Zitat:
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