Hallo,
Ich habe zwei Tabellen, users und groups.
In der Tabelle users sind, wie der Name schon sagt, verschiedene Benutzer mit ihren Daten abgelegt. Jeder Benutzer kann Mitglied in einer Gruppe der Tabelle groups sein. Nun hat jede Gruppe einen Admin, der in der Spalte "admin" der Tabelle groups gespeichert wird. Jetzt möchte ich von Zeit zu Zeit ein mysql-Befehl ausführen lassen, der bei allen Benutzern, die Gruppenadmin sind, die Spalte "groupadmin" der Tabelle users auf 1 setzt. Das Ganze darf nur ein Befehl sein...Tabelle users:
name varchar(50)
group varchar(20)
groupadmin int(1)Tabelle groups:
name varchar(20)
admin varchar(50)
UPDATE groups INNER JOIN users ON groups.name = users.group SET users.groupadmin = 1 WHERE users.name = groups.admin;
Von der Logik her sollte:
UPDATE users INNER JOIN groups ON users.name = groups.admin SET users.groupadmin = 1;
auch funktionieren.
Aber warum machst Du das nicht gleich, wenn Du festlegst, wer Admin sein soll? Irgendwann muss Du doch mal den Admin-Namen in die Tabelle groups schreiben.
Noch günstiger wäre, statt des Admin-Namens einen numerischen Schlüssel aus der Tabelle users in der Tabelle groups zu speichern.
Tabelle users:
id int(x)---------+
name varchar(50) |
group varchar(20) |
|
Tabelle groups: |
name varchar(20) |
admin int (x)--------+
Wer Admin in welcher Gruppe ist, bekommst Du dann mit:
SELECT groups.name, users.name AS admin FROM users INNER JOIN groups ON users.id = groups.admin
viele Grüße
Axel