![]() |
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: |
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. ;)
|
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); |
Re: MySQL - Reihenfolge ändern
Bis auf die nicht vorhandenen Stored Procedures gibt es eindeutige Parallelen zu diesem thread:
![]() Vielleicht hilft es trotzdem ein wenig. Grüße vom marabu |
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 01:04 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