Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL - Reihenfolge ändern (https://www.delphipraxis.net/55150-mysql-reihenfolge-aendern.html)

davar 17. Okt 2005 13:12

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

MySQL - Reihenfolge ändern
 
Hallo Leute,

ich habe ein Problem, bei dem ich noch nicht mal so richtig weiss, wie ich es erklären soll :-)

Also versuche ich es anhand eines Beispiels:

ich schreibe den Namen von 5 Personen in eine Datenbank und gebe jeder Person einen Rang (in diesem Fall 1. - 5.). Diese Zahl (nicht die ID!) gibt an, wie lieb mir diese Person ist.

1. Klaus
2. Dieter
3. Heinz
4. Ali
5. Mehmet

Jetzt kommt eine sechste Person dazu, sagen wir mal Bernd. Bei der Eingabe sage ich, welchen Rang diese Person bekommen soll, sagen wir mal 2.

Jetzt soll Bernd auf den 2. Platz, Dieter auf den 3., Heinz auf den 4. usw.

1. Wie ändere ich die Rangnummern der restlichen Namen?
2. Wie soll das passieren, wenn ich jetzt den Ali ganz sympathisch finde und ihn auf den 1. Platz stelle?

Hoffe, dass klar ist, was ich will.. :|
MfG

davar

P.S.: Dass es sich hier um männliche Namen handelt, hat keinen sexistischen Hintergrund... und erst recht keinen sexuellen :wink:

Matze 17. Okt 2005 13:15

Re: MySQL - Reihenfolge ändern
 
Du kannst beim Auslesen die Datensätze mittels ORDER BY Spaltenname sortieren. Wie die Einträge in der Datenbank vorhanden sind, ist eigentlich völlig egal. ;)

Basilikum 17. Okt 2005 13:18

Re: MySQL - Reihenfolge ändern
 
da würde sich etwa folgendes anbieten:
SQL-Code:
UPDATE personen SET Rang = Rang + 1 WHERE Rang >= 2;
INSERT INTO personen (Name, Rang) VALUES ('Bernd',2);

marabu 17. Okt 2005 16:16

Re: MySQL - Reihenfolge ändern
 
Bis auf die nicht vorhandenen Stored Procedures gibt es eindeutige Parallelen zu diesem thread: klick
Vielleicht hilft es trotzdem ein wenig.

Grüße vom marabu

Taladan 17. Okt 2005 21:51

Re: MySQL - Reihenfolge ändern
 
In deinen Falle mußt du das Umgekehrt aufstricken. Stück für Stück.

Also einen Einfügen (hab grad kein Delphi installiert, sonnst käme hier eine vernünftige Prozedur).

Frage 1 - Einfügen:
Datensätze je einen nach unten kopieren (kopieren nicht verschieben, sonnst haste nachher ein Loch und deine DB löscht den Datensatz).

for i=(end of database) upto (einfügezeile+1) deine Kopieranweisung

Frage 2 - Verschieben:
Schon schwiriger. Hier für mußt du einen Temp Datensatz erstellen wo du deinen Platz 1 (oder oberster Datensatz) rein packst. Prozedur ist ähnlich. Nur halt Startzeile und Endzeile Verändern. und dann prozedur

for i=(erster zu verschienebe datensatz) downto (end of list -1 oder aktuelle position - 1) do deine Kopieranweisung

Zu guter letzt wird der Temporäre Datensatz in das so entstandene Loch (weiter oben) reinkopiert.

Diese Skripte fressen Ressourcen und es geht bestimmt auch einfacher. Aber sie erzeugen das richtige Ergebnis.

Gruß dat Tala


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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