• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

UPDATE mit JOIN?

Rayse

Mitglied
Ich hab hier eine ziemlich große SELECT Abfrage:

PHP:
SELECT DISTINCT m.ID FROM users AS m
                        JOIN users_info AS i ON m.ID=i.UserID
                        JOIN files AS f ON m.ID = f.uid
                        WHERE m.PermissionID = 3
                        AND ((i.setting = 'default'
                        AND ((m.count / m.file) + ( ((
                        SELECT sum(time)
                        FROM files
                        WHERE uid = m.ID) / (
                        SELECT COUNT(*)
                        FROM files AS t
                        WHERE t.uid = m.ID)) /100 /60 /60) < 0.95)))
                        OR (i.setting = 'system'
                        AND (m.count/m.file < 0.95))
                        OR m.PermissionID = 3
                        AND m.count < 25*1024*1024*1024

Wahrscheinlich kann man diese noch etwas optimieren, besser habe ich es allerdings nicht hinbekommen.

Ich würde aus dieser SELECT Abfrage jetzt gern ein UPDATE machen, ich hab es schon mehrfach versucht, bisher waren die Abfragen aber allesamt ungültig.

Vielleicht hat ja jemand einen Tipp.

Gruß Rayse
 
Werbung:
Werbung:
Und mit welchem Wert? Bei dem SELECT lädst Du ja immer nur "m.PermissionID = 3"?
 
Das ist imho dennoch zu komplex für ein einzelnes Update-Statement. Vlt. solltest Du das als Funktion bauen und darin die Werte der einzelnen Tabellen abfragen und dann in einem Update-Statement losschicken.
 
Werbung:
Kann ich ein Update-Statement mit mehreren eindeutigen Schlüsseln durchführen?

Z.B. sowas wie "UPDATE table_test SET PermissionID = 2 WHERE UserID = 2,3,4,5,6". Also so funktioniert es natürlich nicht, aber so was bräuchte ich dann ja. Das ich mit der Funktion die UserIDs aufnehme die sich einem Update unterziehen sollen und im zweiten Query diese ID's dann für das Update verwende.

Alternativ könnte ich natürlich auch ein solches Update Query in einer Schleife laufen lassen, aber das wäre enorm ineffizient und ich meine mal gelesen zu haben das man unter gar keinen Umständen Querys in Schleifen ausführen soll.
 
Code:
UPDATE table_test SET PermissionID = 2 WHERE UserID IN (2,3,4,5,6)

wäre die richtige Schreibweise. Oder auch mit vielen OR-Bedingungen.

Code:
UPDATE table_test SET PermissionID = 2 WHERE UserID = 2 OR UserID = 3 ...
 
Werbung:
Zurück
Oben