Bueno parece estar todo bien excepto por la parte del insert, segun revise la sintaxis del insert con subconsultas deberias quitar el values del INSERT.
Aqui te dejo una descripcion de como deberia ser el INSERT, sacada del manual de referencia de mysql
Cita: In general, you cannot modify a table and select from the same table in a subquery. For example, this limitation applies to statements of the following forms:
DELETE FROM t WHERE ... (SELECT ... FROM t ...);
UPDATE t ... WHERE col = (SELECT ... FROM t ...);
{INSERT|REPLACE} INTO t (SELECT ... FROM t ...);
saludos, cya