MYSQL query Invertieren

Daniel_CB

Aktives Mitglied
Hallo Liebe Forengemeinde.

Ich habe eine Tabelle die einmal im monats geupdated wird. Die Zusammenhänge laufen über eine Stored Procedures ab.

USER_ID || USER_POSITION

bis jetzt weiche ich immer auf ein PHP script aus um dieses Problem zu lösen.
In diesem Script wird eine temporäre Tabelle angelegt die User in die Tabelle neu hereinsortiert und danach einfach ein Update und die Daten zurückkopiert. die Position ist dabei ein PRIMARY kEY MIT AUTOINCREMENT
CODE
$sql = 'INSERT INTO `kd_zeitpunktetabelle` ( `id` )'
. ' SELECT NULL, REL.id'
. ' FROM `kunden_rechnungslauf` AS REL'
. ' LEFT JOIN Kunden AS KD'
. ' ON REL.id = KD.id'
. ' WHERE KD.aus_dat IS NULL AND KD. wieder_dat != 0'
. ' ORDER BY KD.wieder_dat DESC';



Ich habe irgendwo mal gesehen das man ein Update auch mit der Aktuellen Datensatznummer machen kann
smile.gif


Danke Daniel
 
Ein Update kannst Du in der Regel direkt machen:

CODE Update Tabelle
Set Spalte = B.Wert
From Tabelle As A Inner Join
(Select X.Id, X.Wert * 5.8
From Tabelle As X Where ...) As B
On A.Id = B.Id
Where ...


Im Prinzip kannst Du den bis jetzt genutzten Select-Ausdruck direkt als Unterabfrage verwenden und ihn mit der vorhandenen Tabelle verknüpfen, um die gewünschten Zeilen zu ermitteln.

Im Update-Abschnitt gibt es da sicherlich noch ein paar Beispiele.
 
Vielen Dank,

und damit bekomme ich die aktuelle Position heraus

Sprich
ID||DATUM
1 = 01.08.2007
2 = 04.08.2007
3 = 02.08.2007
4 = 05.08.2007
5 = 03.08.2007

ist die Ausgangslage

und nach dem Update soll es so in der Tabelle stehen

ID||POSITION
1 = 1
2 = 4
3 = 2
4 = 5
5 = 3

Gruß Daniel
 
mySql nutze ich nicht.

Aber da wird es sicherlich irgendeine Positionsfunktion geben, also eine Funktion, welche die Position der aktuellen Zeile im Ergebnis zurückgibt.

Mit

CODE Select A.id, diese-Positionsfunktion() As Wert
From Tabelle
Order By Datum


kriegst Du das, also das in die Update-Klausel rein (die mySql-Version muß natürlich Unterabfragen unterstützen).
 
Zurück
Oben