![]() |
MYSQL Consultar e insertar datos al mismo tiempo Usuarios __________________________________________________ _______ id_usuario|id_estado| nombre| calle| colonia| cp| mpo| telefono| correo ________|________|_____ _|____|______|__ |___ |______ |______ ________|________|______ |____|______|__ |____|______ |______ ________|________|______ |____|______|__ |____|______ |______ Estados id_estado | nom_estado _________________________ 01 | Aguascalientes 02 | Baja California 03 | Baja California Sur 04 | Campeche 05 | Chiapas 06 | Chihuahua 07 | Coahuila Tengo una tabla llamada usuarios la cual se encuentra totalmente vacía. También tengo otra tabla llamada Estados en la cual están almacenados todos los estados de México más el DF., Hasta aquí todo esta bien Ahora el problema viene cuando deseo ingresar datos en la tabla usuarios y al mimo tiempo ingresar el id_estado en la tabla usuarios ejemplo. Insert into usuarios (id_estado, nombre, calle, colonia, cp, mpo, telefono, correo) values (´id_estado´, ´Claudio´, ‘Montes de oca’, ´Pueblo Viejo´, ´01234´, ´Temixco´, ´0123456´, ´[email protected]´); Y lo que se obtenga de la siguiente consulta: Select id_estado from usuarios where nom_estado=´Campeche´; Pero me gustaría insertar el id_estado al mimo tiempo que todos los demás datos que se encuentran en el insert de arriba. de antemano agradesco su ayuda. |
Re: MYSQL Consultar e insertar datos al mismo tiempo No se me ocurre ahora cómo hacerlo sin recurrir a dos queries. Primero haz el select, obten el valor del ID y luego usa eso para el otro insert. Igual es obvio... pero es lo que se me ocurre |
Re: MYSQL Consultar e insertar datos al mismo tiempo Son dos sentencias diferentes... en todo el SQL que he visto jamás ví eso. Son cosas muy diferentes una inserción y una selección... Saludos. |
Re: MYSQL Consultar e insertar datos al mismo tiempo chclaudio, es posible hacerlo pero todo depende de tu la aplicacion que usas , supon que en la interfaz ingresan todos esos datos en un formulario, nombre, calle, etc. y tambien seleccionan el estado de algun elemento combo box, ahi tu puedes asignar los pks de cada elemento con el valor que se muestra en el combo box, asi cuando obtienes el elemento puedes recuperar tambien el id de tu base y te evitas la primera consulta, saludos, cya |
Cita:
Cita:
Cita:
|
Re: MYSQL Consultar e insertar datos al mismo tiempo Técnicamente es posible, pero deberías crear un id_estado falso de entrada de modo que pudieras ingresar los datos del registro completo. Me explico: 1. El objetivo de tener dos tablas distintas para los estados y los usuarios es, sin duda, para una buena normalización y evitar la redundancia de datos que sería incluir el nombre del Estado en cada usuario nuevo. 2. El problema, es que lo que buscas es ingresar los registros de ambos en una sola operación, pero como el del Estado tiene dos campos, o bien mandas los dos valores en el insert del usuario o dejas nulo el del Estado. 3. Como eso no es posible, o de lo contrario el segundo select jamás te devovlería el valor, tienes que mandar los dos datos... 4. Pero la tabla usuario no tiene ese segundo campo, por lo que te daría un error de cantidad de columnas en el INSERT. Veamos: 1. La primera parte, el insert, es simple: se solucionaría con un TRIGGER, antes de insertar el ID_Estado le mande un REPLACE a la tabla Estados. Digo REPLACE para mandar una sola sentencia, si quieres verificar y después insertar en el trigger, es tu decisión. También sería correcto y no tendrías actualizaciones innecesarias. 2. La segunda parte, en nombre del Estado es la que causa el problema, tienes que enviarla al mismo tiempo. 3. Lo que yo haría es que: a) la sentencia INSERT reciba un String y no un Integer, siguiendo un modelo como: "#### - XXXXXXXXXXX", b) el trigger partiría el contenido en dos variables, la primera se la reasignaría al campo entrante, que ahora contendría solamente en Integer, aunque sea en un campo CHAR(), no hay que olvidar que el MySQL es contextual y va a interpretar lo que recibe si se corresponde, con el tipo de campo que debe almacenar; así, si recibe "00012" en un campo INT, lamacenará (12). c) a su vez las dos partes las enviaría en un INSERT a la tabla estado, suprimiendo el string " - " inicial. Esto simpemente lo puedes hacer con las funciones LEFT() y RIGHT(), predefiniedo con LPAD() que el bloque inicial "####" se rellene con ceros a la izquierda, de modo de recibir siempre la misma longitud de numeros para que el LEFT() y el RIGHT() funcionen bien. ¿Se entiende bien, o te lo pongo en un ejemplo? |
Respuesta: MYSQL Consultar e insertar datos al mismo tiempo Puedes probar con esto pero lo aconsejado es poner todos los estados en un combobox y que el value de cada uno sea el id de su registro. Entonces al leer ese campo, ya tiene el id del estado. Código PHP: |
| La zona horaria es GMT -6. Ahora son las 00:30. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.