selecionar el ultimo id creado en otra query

Iniciado por gAb1, 29 Agosto 2013, 07:38 AM

0 Miembros y 1 Visitante están viendo este tema.

gAb1

Hola, tenia dudas de si postearlo en php, pero creo que aqui es mas adecuado.

Tengo un problema para insertar un par de numeros en una tabla de mysql mediante un sencillo script php. Necesito coger la ultima id creada en una table y usarla en otra:

$register_logon = mysql_query("INSERT INTO rbac_account_groups (accountId,groupId) SELECT id as latestid FROM account ORDER BY joindate DESC LIMIT 1 VALUES ('latestid+1','1')");

Lo que no sé, es como usar la variable lastestid...

¿Alguna ayuda?

Gracias.

Saludos

gAb1

HdM

Hola.

La sintaxis que utilizas es incorrecta y creo que además complicas demasiado la consulta. Prueba con:

Código (sql) [Seleccionar]

INSERT INTO rbac_account_groups (accountId,groupId) VALUES ((SELECT MAX(id)+1 FROM account),1)


Saludos.

- Nice to see you again -

gAb1

#2
Muchisimas gracias, tengo que ponerme al dia con esto.

Parece que hay un error con el +1, me devuelve este error:
Citar<e>Query: INSERT INTO `rbac_account_groups` (accountId, groupId) VALUES ((SELECT MAX(id)+1 FROM `account`),'1')

Error Code: 1452
Cannot add or update a child row: a foreign key constraint fails (`auth`.`rbac_account_groups`, CONSTRAINT `fk__rbac_account_groups__account` FOREIGN KEY (`accountId`) REFERENCES `account` (`id`) ON DELETE CASCADE)

Sin el +1 va bien, pero account.id es primary key y autoincrement.

Carloswaldo

Al parecer rbac_account_groups.accountId es un FK de account.id ¿No? En tal caso es obvio que el constraint falle, estás sumando 1 al último id ingresado, es decir, haces referencia a un id en account que no existe.

gAb1

Si, me acababa de dar cuenta cuando abri el alter table menu para activar el autoincrement y asi no necesito insertar accountId ya que, al igual que id (from account) se asigna automaticamente desde 1.

Gracias por las respuestas.

Saludos

gAb1