-UPDATE TABLE accounts AS a
- INNER JOIN profile_name_enum AS le ON (le.type = 'lastname')
- INNER JOIN profile_name_enum AS ce ON (ce.type = 'lastname_ordinary')
- INNER JOIN profile_name AS l ON (a.uid = l.uid AND le.id = l.typeid)
- LEFT JOIN profile_name AS c ON (a.uid = c.uid AND ce.id = c.typeid)
- SET a.lastname = IF(c.uid IS NULL, IF(l.particle != '', l.name, CONCAT(l.particle, ' ', l.name))
- IF(c.particle != '', c.name, CONCAT(c.particle, ' ', c.name)))
- WHERE a.type IN ('x', 'master', 'phd');
+ UPDATE accounts AS a
+INNER JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET('owner', ap.perms))
+INNER JOIN profile_name_enum AS le ON (le.type = 'lastname')
+INNER JOIN profile_name_enum AS ce ON (ce.type = 'lastname_ordinary')
+INNER JOIN profile_name AS l ON (ap.pid = l.pid AND le.id = l.typeid)
+ LEFT JOIN profile_name AS c ON (ap.pid = c.pid AND ce.id = c.typeid)
+ SET a.lastname = IF(c.pid IS NULL, IF(l.particle != '', l.name, CONCAT(l.particle, ' ', l.name)),
+ IF(c.particle != '', c.name, CONCAT(c.particle, ' ', c.name)))
+ WHERE a.type IN ('x', 'master', 'phd');