Hace unos mins estuve jugando con una consulta en MySQL para poder insertar el orden de la búsqueda :
[sourcecode="sql"]
INSERT INTO Tabla (nombre,fecha,texto,orden) values ('".$nombre."','".$fecha."','".$texto."',(select max(orden)+1 from Tabla))
[/sourcecode]
pero me dió el error:
You can't specify target table 'Tabla' for update in FROM clause
El error se da tanto en count, min, max
La solución simple es hacer un select desde una tabla "falsa" con un alias, mejor dicho en SQL:

[sourcecode="sql"]
INSERT INTO Tabla (nombre,fecha,texto,orden) values ('".$nombre."','".$fecha."','".$texto."',(
select max(orden)+1 from (select * from Tabla) as mi_tabla_falsa)
)
[/sourcecode]
Creo que no es necesario explicar el código, ¿o sí?

{actualización 13/09/2013}

Me cuenta Random que también se puede hacer así:

[sourcecode="sql"]
INSERT INTO Tabla (nombre,fecha,texto,orden) values ('".$nombre."','".$fecha."','".$texto."',(
select max(orden)+1 from Tabla as mi_tabla_falsa)
)

[/sourcecode]

{/actualización 13/09/2013}

Nota Mental: Leer esto cuando tenga el mismo error :B

saludos!

 

 

Last modified: 13 Septiembre 2013

Author

Comments

Wena brede !!!!!!!

Buena idea, me ha salvado de tener que hacer dos consultas.

Gracias… buena tu solucion 

Gracias, aunque si le haces el alias a la tabla directo igual funciona 😉
INSERT INTO Tabla (nombre,fecha,texto,orden) values (‘”.$nombre.”‘,'”.$fecha.”‘,'”.$texto.”‘,(
select max(orden)+1 from Tabla as mi_tabla_falsa)
)

Write a Reply or Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.