Wykombinowałem takie zapytanie: SELECT n.id FROM nodes n LEFT JOIN nodeassignments ON n.id = nodeassignments.nodeid LEFT JOIN assignments ON nodeassignments.assignmentid=assignments.id WHERE (assignments.dateto > unix_timestamp() or assignments.dateto='0' ) AND assignments.datefrom < unix_timestamp() AND assignments.suspended = 0 AND access = '0' AND (SELECT SUM(value) FROM cash WHERE customerid = n.ownerid) >= 0
wykonuje się ładnie i szybko. ale jeśli wrzucę to do update: UPDATE nodes SET warning=0, access=1 WHERE id IN ( SELECT n.id FROM nodes n LEFT JOIN nodeassignments ON n.id = nodeassignments.nodeid LEFT JOIN assignments ON nodeassignments.assignmentid=assignments.id WHERE (assignments.dateto > unix_timestamp() or assignments.dateto='0' ) AND assignments.datefrom < unix_timestamp() AND assignments.suspended = 0 AND access = '0' AND (SELECT SUM(value) FROM cash WHERE customerid = n.ownerid) >= 0 )
to mysql krzyczy: #1093 - You can't specify target table 'nodes' for update in FROM clause