Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage ohne Indexsortierung (https://www.delphipraxis.net/100450-abfrage-ohne-indexsortierung.html)

Ydobon 28. Sep 2007 14:45

Datenbank: MS Jet • Version: 4.0 • Zugriff über: ADO

Abfrage ohne Indexsortierung
 
Hallo!

Ich bräuchte zur Anzeige in einem DBGrid einer Datenbank mit einem einfachen Integerindex eine Abfrage für Datensätze mit bestimmten Indizes in einer anders vorgegeben Reihenfolge, als es den Indizes entspricht.
Zum Beispiel aus einer Datenbank mit 10 Datensätzen, Index von 1 bis 10 die Datensätze mit den Indizes 7, 3, 5 - in genau dieser Reihenfolge. Nehme ich eine Abfrage mit entsprechenden ORs, gibt es allerdings 3, 5, 7.
Die Indizes und ihre Anzahl ändern sich dabei bei jeder Abfrage.

Lässt sich das mit SQL allein machen oder muss ich erst mit Delphi versuchen etwas dafür basteln?

shmia 28. Sep 2007 14:54

Re: Abfrage ohne Indexsortierung
 
Du brauchst irgendein Feld (z.B. ein Datumsfeld) nach dem du Sortieren kannst.
(mit der SQL-Klausel ORDER BY)
Von der Idee, dass die Datensätze eine bestimmte Recordnummer haben musst du dich komplett verabschieden.
Wenn du z.B. bestimmte Aufgaben in einer Tabelle ablegen möchtest und du möchtest die Datensätze in eine bestimmte Reihenfolge bringen, dann musst du ein zusätzliches "Prio"-Feld einführen
Code:
PK  |Aufgabe            |Prio
===============================
1    |Hände waschen      |  6
2    |Einkaufen          |  3
3    |zur Bank gehen     |  2
4    |Auto putzen        |  4
5    |Computer starten   |  8
Sie SQL-Abfrage sähe so aus:
SQL-Code:
SELECT * FROM Tabelle ORDER BY Prio

Ydobon 28. Sep 2007 15:45

Re: Abfrage ohne Indexsortierung
 
In der DB sind so etwas wie verkettete Listen untergebracht, z.B. in einer Kundendatei (nicht wirklich, aber das gleiche Prinzip) kann jeder Kunde von einem anderen geworben worden sein und selbst jemanden geworben haben, die entsprechenden sind dann bei dem Kunden mit ihrer ID (einzig eindeutiges Feld) gespeichert.
Es gibt natürlich mehrere, unterschiedliche Listen. Wenn ich einen zufälligen Kunden wähle, wollte ich die, wenn vorhanden, zu ihm gehörende Liste haben. Die IDs lassen sich problemlos auslesen, mit denen wollte ich eine Abfrage gleich in der richtigen Reihenfolge erstellen.

Eins, zwei neue Felder wären aber eine Idee, mal durch die fertige DB durchgehen und jeweilige Liste sowie Listenposition für jeden Datensatz noch dazu speichern, auch wenn die Datenbank damit mal wieder wächst, was ich eigentlich vermeiden wollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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 by Thomas Breitkreuz