Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con query que inserta en dos tablas

Estas en el tema de Problema con query que inserta en dos tablas en el foro de Mysql en Foros del Web. Hola!! bueno igual es la pregunta un poco tonteria pero no consigo averiguar la respuesta... En mi base de datos tengo para la autenticacion dos ...
  #1 (permalink)  
Antiguo 19/01/2007, 06:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 17 años, 5 meses
Puntos: 0
Problema con query que inserta en dos tablas

Hola!! bueno igual es la pregunta un poco tonteria pero no consigo averiguar la respuesta...
En mi base de datos tengo para la autenticacion dos tablas : La tabla usuario con el login, contraseña, nombre... etc y la tabla roles que tiene los campos Login ( referencia al de la tabla usuario ) y el atributo rol ( por defecto en la base de datos lo he puesto como usuario )
Me gustaría conocer el query que me permite insertar una fila en ambas tablas, es decir :
INSERT INTO registrado (Login, Password, Nombre...) VALUES (?,?,?...).....¿?¿?
jajja bueno no se... he buscado y encontre este pero sigue sin funcionarme :
INSERT INTO roles (Login,Rol) VALUES SELECT registrado.Login
y luego el usuario que está por defecto no se si no hay que poner nada.... o que, bueno muchisimas gracias de antemano.
  #2 (permalink)  
Antiguo 19/01/2007, 06:56
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Problema con query que inserta en dos tablas

Consulta LAST_INSERT_ID(), a traves de UNION, pero yo personalmente lo hago siempre por programación, en este caso PHP, con la función mysql_insert_id(), haciendo dos consultas una inserción primero del usuario en la tabla usuarios y otra inserción en la tabla roles habiendo recogido ya la id de usuario gracias a la función mysql_insert_id().

El engendro en mysql con una sóla consulta creo que sería algo así con UNION

Código:
INSERT INTO usuarios (campo1,campo2) VALUES (1,2)

UNION

INSERT INTO roles(nivel,usuario) VALUES ('principiante',LAST_INSERT_ID()
Un saludo crack ;)
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #3 (permalink)  
Antiguo 19/01/2007, 08:07
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con query que inserta en dos tablas

Hola! jajaj para crak tu :P!! Gracias por contestar otra vez tan rapido. He probado lo que me has dicho y no me vunciona :( pero he leido en otro mensaje de este foro que sirve para los que son clave autoincrement y claro, la clave de mi tabla es String, por tanto no es autoincrement... alguna otra alternativa¿? :S
Muchisimas gracias otra vez, y un saludo!!
  #4 (permalink)  
Antiguo 19/01/2007, 10:02
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Problema con query que inserta en dos tablas

Hola cracka ;)

Lo que no entiendo muy bien es como consigues entonces el id del usuario que acabas de dar de alta antes de meterlo en roles, imagino que la tabla usuarios tendrá una forma de identificar inequivocamente a cada uno (la id normalmente).

Explica si puedes un poquito como es la estructura de tus tablas porque sino uffff chungo.

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #5 (permalink)  
Antiguo 19/01/2007, 11:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con query que inserta en dos tablas

jajajajaja que bueno cracka... viene bien reirse ante tanta desesperacion junta... xD
Primero siento haber sido tan explicita, tienes razon, tenia que haberlo explicado unp oco mas, sorry.
Veras, tengo una tabla llamada "registrado" donde hay una serie de atributos como Login, nombre, apellido1, apellido2, email, provincia, telefono... la clave primaria es Login y un string con la restriccion NOT NULL. No tengo ya ninguna clave id para usuarios ya que en la aplicación no podrá haber nadie que tenga el mismo Login con lo cual ya me ahorro el atributo id, y lo hago directamente con este campo String.
Luego está la tabla de Roles, que tiene dos campos que son el Login ( que se identifica con el login de un usuario ) y el Rol, el cual puede ser usuario, administrador o visitante. Para todas las personas que se registren tendrán el valor de usuario y por el de administrador no me preocupo porque lo puedo poner io directamente en la base de datos ya que solo va a haber uno y ya le digo io el login y la contraseña que le he puesto, jeje.
El problema es que me gustaría al registrar el usuario crear la tupla de la tabla Roles a la vez ya que sé que va a tener el Login que acaba de introducir para el formulario de registro, y el rol "usuario".
Puesssss creo que ya sta... de todas formas si sigues sin entenderme pues me dices ok?? :D muchas gracias!!
  #6 (permalink)  
Antiguo 19/01/2007, 12:21
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Problema con query que inserta en dos tablas

Uffffff se complica el problema y te cuento porque.

El supuesto "ahorro" qeu haces al no tener campo id te causó el primer problema que no es poco.

Mi recomendación es la siguiente y no lleva mucho trabajo (2 consultas)

Primero crear un campo id en tu tabla "registrado", si lo creas como primario autoincrementable NOT NULL, te asignará directamente una id por registro y si como dices no tienes a nadie duplicado no habrá problemas.

Segundo actualizar la tabla roles para que se asocie ocn registrado por la id algo así

Código:
UPDATE 
roles,registrados 
SET 
rol.login = registrados.id 
WHERE 
rol.login = registrados.login
Una vez hecho esto podrás usar cualquiera de las soluciones qeu te propuse antes y además tus consutas se realizarán a traves de una id que es una clave primaria numérica por lo que irán bastante más rápdias.

Un saludo espero que te valga cracka ;)
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #7 (permalink)  
Antiguo 22/01/2007, 03:18
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema con query que inserta en dos tablas

Hola! muchas gracias por tus respuestas!! al final conseguí solucionar mi problema pero no de la forma que me dijiste. Hice dos sql con código normales y las uní en una función (pensé que por las características de mi código no iba a funcionar, pero si!!!!)
Y bueno, ahora tengo otra duda que quiero que cuando un registrado se dé de baja en la base de datos en vez de borrar los datos que almacenó cambie el Login para que no pueda volver a usarlo.
El query que había pensado es
"UPDATE from registrado SET Login=nuevoLogin where Login = ?";
donde nuevoLogin es ***valorDelLoginAntiguo***
Es decir, si mi Login fuera Kris, al darme de baja que quedara codificado como ***Kris***
Alguien puede ayudarme??? muchisimas gracias!!!!!!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:56.