Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 05. Februar 2013 11:42

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

MySQL Felder aufsteigend neu füllen

Hallo,

da dies nichts mit CMSms zu tun hat, aber hier sicher jemand ist, der es weiß, stelle ich die Frage einfach mal am Stammtisch:
Bei einem Kunden läuft eine Faktura-Software auf MySQL-Basis. Nun sollen sämtliche, bisher willkürlich vergebene, Kundennummern zurückgesetzt werden auf 10001 fortlaufend.
Das Feld in der Datenbank habe ich schon gefunden und es ist auch nicht der Primärschlüssel. Ich habe auch bei CMSms oder anderen Systeme immer mal wieder Arbeiten direkt an der Datenbank vorgenommen - in der Regel suchen und ersetzen.
In diesem Fall wäre wahrscheinlich das hier gar nicht so falsch:

[== SQL ==]
UPDATE tabellenname SET spaltenname=wert

Allerdings soll ja nicht jeder die selbe Nummer bekommen sondern eben aufsteigend von 10001 bis hin zum letzten Datensatz. Ich habe nur etwas gefunden, was den aktuellen wert einfach um z.B. 1 erhöht. Aber es sollen eben alle Werte neu und gleichzeitig aufsteigend gesetzt werden.
Gibt's da einen direkten Weg/Befehl?

Offline

#2 05. Februar 2013 12:05

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.931
Webseite

Re: MySQL Felder aufsteigend neu füllen

Das könnte mit einer while Schlaufe funktionieren:

http://msdn.microsoft.com/de-de/library/ms178642.aspx

set @i = 10001
WHILE (SELECT ID FROM TABLE) > 0
BEGIN
   UPDATE TABLE as T SET NR = @i where T.ID = TABLE.ID
   set @i = @i+1  
END

--> Ungetestet, einzig mal ein Lösungsansatz

Eine andere Lösung ist natürlich das ganze mit einem PHP Script zu schreiben.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 05. Februar 2013 12:51

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: MySQL Felder aufsteigend neu füllen

Wenn die IDs Integer sind, so bleiben können, eineindeutig sind und lediglich in auto_increment Felder und primary Keys geändert werden sollen, würde ich es so machen:
http://stackoverflow.com/questions/2514 … r-the-fact

Wenn die IDs neu generiert werden sollen, würde ich die Tabelle ohne IDs exportieren und in eine neue Tabelle, bei der die ID als integer, auto_increment und primary key definiert ist, wieder importieren.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#4 07. Februar 2013 13:49

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: MySQL Felder aufsteigend neu füllen

Hi,

Danke für die Hinweise. Nach langen Experimenten hat leider nichts funktioniert - irgendwo scheint es doch noch eine Verknüpfung zu geben, die ich nicht finden kann.
Werd mal den Entwickler anschreiben. Irgendwie muss es ja gehen.

Offline