Tom: SQL, Bubble mit SQL

Beitrag lesen

Hello,

Um nun zwei Produkte auszutauschen muss man ja "nur" die
Sortierschlüssel austauschen.
Wie macht man das am effektivsten?

das hatten wir doch letztens schon einmal.
2 schlüssel s1 + s2. jeder schlüssel darf nur einmal vorkommen:

update tabelle set s = (s1+s2)-s
where s in (s1, s2)

Intelligente Loesung, bin ehrlich beeindruckt.

Ich hatte es mit

update tabelle set s = if(s=s1,s2,s1) where s in (s1,s2);

Beide Lösungen haben aber für meine Aufgabenstellung eine Macke. Es sollen zwei in der menge aller s aufeinanderfolgende Datensätze getauscht werden. Es ist nur der Schlüssel s1 explizit bekannt, der Schlüssel s2 muss durch s2=s1-1 oder s2=s1+1 ermittelt werden.

Dafür ist der geschlossene Nummernkreis notwendig. Oder irre ich mich da. Außerdem müssen die Grenzen berücksichtigt werden. Am unteren Ende ist das kein Problem, da der erste Schlüssel auch mit 1 festgelegt sein kann. Allerdings ist am oberen Ende wieder nichts ohne Abfrage möglich, da die Anzahl der in der Liste befindlichen Sätze nicht festgelegt ist.

Der Tausch darf also nur stattfinden, wenn beide Schlüssel vorhanden sind. Ich habe schon gegrübelt, ob man das mit einem SelfJoin prüfen könnte.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau