elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  insertar en 1 sql solo varios datos relacionado con varias tablas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: insertar en 1 sql solo varios datos relacionado con varias tablas  (Leído 4,252 veces)
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
insertar en 1 sql solo varios datos relacionado con varias tablas
« en: 18 Octubre 2015, 04:12 am »

Buenas mi nombre es sergio, estoy viendo, como puedo insertar con una sql solo varios datos en varias tablas, este es el esquema que tengo, haber si alguien me puede guiar.

Código
  1. --
  2. -- CLIENTES
  3. --
  4. CREATE TABLE clientes(
  5. cod_cliente mediumint NOT NULL AUTO_INCREMENT,
  6. fecha VARCHAR(200),
  7. contacto VARCHAR(200),
  8. tipo VARCHAR(200),
  9. poblacion VARCHAR(200),
  10. provincia VARCHAR(200),
  11. pais VARCHAR(200),
  12. revisado VARCHAR(200),
  13. nombre_empresa VARCHAR(200),
  14. web VARCHAR(200),
  15. CONSTRAINT PKCL PRIMARY KEY (cod_cliente)
  16. ) ENGINE=InnoDB;
  17.  
  18. --
  19. -- CLIENTES_TELEFONOS
  20. --
  21. CREATE TABLE clientes_telefonos(
  22. cod_telefonos INT NOT NULL AUTO_INCREMENT,
  23. clientes_telefonos VARCHAR(200),
  24. cod_tel mediumint,
  25. CONSTRAINT PKCLTE PRIMARY KEY (cod_telefonos),
  26. CONSTRAINT FKCLTE FOREIGN KEY (cod_tel) REFERENCES clientes(cod_cliente) ON DELETE CASCADE
  27. ) ENGINE=InnoDB;
  28.  
  29. --
  30. -- CLIENTES_TRATAMIENTO
  31. --
  32. CREATE TABLE clientes_tratamiento(
  33. cod_tratamiento INT NOT NULL AUTO_INCREMENT,
  34. nombre VARCHAR(200),
  35. apellidos VARCHAR(200),
  36. cod_tra mediumint,
  37. CONSTRAINT PKCLTR PRIMARY KEY (cod_tratamiento),
  38. CONSTRAINT FKCLTR FOREIGN KEY (cod_tra) REFERENCES clientes(cod_cliente) ON DELETE CASCADE
  39. ) ENGINE=InnoDB;
  40.  
  41. --
  42. -- CLIENTES_EMAILS
  43. --
  44. CREATE TABLE clientes_emails(
  45. cod_emails INT NOT NULL AUTO_INCREMENT,
  46. clientes_emails VARCHAR(200),
  47. cod_email mediumint,
  48. CONSTRAINT PKCLEM PRIMARY KEY (cod_emails),
  49. CONSTRAINT FKCLEM FOREIGN KEY (cod_email) REFERENCES clientes(cod_cliente) ON DELETE CASCADE
  50. ) ENGINE=InnoDB;
  51.  

sugerencias? o mejoras sobre las mismas? o parece estar bien organizado?, Gracias


En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
Hurdano


Desconectado Desconectado

Mensajes: 322


Se que puedo cambiar el futuro, pero no el pasado


Ver Perfil WWW
Re: insertar en 1 sql solo varios datos relacionado con varias tablas
« Respuesta #1 en: 18 Octubre 2015, 12:11 pm »

Podrías decir que sistemas estás usando? SQL Server? otro? Puede que en algunos te dejen hacerlo, pero en otros no.

Bueno, ahora mismo no recuerdo muy bien, pero puedes importar al sistema gestor un archivo.txt, en el que vienen todos los datos de las tablas, y al importarlo se introducen todos, si es eso lo que estás preguntando. Porque se pueden poner todos los insert, restricciones, etc en ese archivo y al pasarlo te lo queda.

Siento no explicarme mejor, hace tiempo ya de esto y no recuerdo muy bien, tendría que volver a repasarlo y ver como era lo que intento explicar, pero seguro que antes de que me ponga yo con ello, habrá alguien que pueda decírtelo mejor.


En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: insertar en 1 sql solo varios datos relacionado con varias tablas
« Respuesta #2 en: 18 Octubre 2015, 12:58 pm »

estoy usando mysql,se podria hacer en una sql?
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
Hurdano


Desconectado Desconectado

Mensajes: 322


Se que puedo cambiar el futuro, pero no el pasado


Ver Perfil WWW
Re: insertar en 1 sql solo varios datos relacionado con varias tablas
« Respuesta #3 en: 18 Octubre 2015, 16:26 pm »

Para una tabla se que sí, osea, hacer tu inser into values, y entre paréntesis lo que debe aparecer en cada fila en plan (valor,valor,"valor") como debas ponerlo si son integer, string, etc. Abres un conjunto de paréntesis, y ahí metes lo de una fila, cierras, abres otro y los siguientes valores y así.

Ejemplo:
Código
  1. INSERT INTO tabla (campo1, campo2, campo3) VALUES
  2. (v1_1, v1_2, v1_3),
  3. (v2_1, v2_2, v2_3),
  4. (v3_1, v3_2, v3_3);
En línea

0roch1

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: insertar en 1 sql solo varios datos relacionado con varias tablas
« Respuesta #4 en: 22 Octubre 2015, 20:08 pm »

No es posible insertar en diferentes tablas con un solo query.

Tienes dos opciones:
1. Crear un stored procedure
Working with Stored Procedures

Código
  1. DELIMITER $$
  2.  
  3. CREATE
  4.    PROCEDURE `ehn`.`registra_cliente`(IN vnombre_empresa VARCHAR(200), IN vemail VARCHAR(200))
  5.    BEGIN
  6. INSERT INTO clientes(nombre_empresa) VALUES(vnombre_empresa);
  7. INSERT INTO clientes_emails(clientes_emails, cod_email) VALUES(vemail, LAST_INSERT_ID());
  8.    END$$
  9.  
  10. DELIMITER ;
  11.  

Código
  1. CALL registra_cliente('nombre empresa', 'email');
  2.  

2. Escribir los insert en varias consultas.

Con respecto a tu esquema te sugiero cambiar el nombre de tus campos con llave foranea, por ejemplo.

Código
  1. CREATE TABLE clientes(
  2. cod_cliente mediumint NOT NULL AUTO_INCREMENT,
  3. ...
  4. CONSTRAINT PKCL PRIMARY KEY (cod_cliente)
  5. ) ENGINE=InnoDB;
  6.  
  7.  
  8. CREATE TABLE clientes_emails(
  9. cod_emails INT NOT NULL AUTO_INCREMENT,
  10. ...
  11. cod_email mediumint,
  12. CONSTRAINT PKCLEM PRIMARY KEY (cod_emails),
  13. CONSTRAINT FKCLEM FOREIGN KEY (cod_email) REFERENCES clientes(cod_cliente) ON DELETE CASCADE
  14. ) ENGINE=InnoDB;
  15.  

Es un poco confuso el nombre del campo cod_email en la tabla clientes_emails, mientras tu lo comprendas está bien.
Entiendo que es la relación con cod_cliente de la tabla clientes, pero para que sea más fácil de leer tienes varias opciones, incluso puedes dejarlo como: cod_cliente, cod_cliente_fk, cod_cliente_id, cliente_fk, etc.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alguien sabe insertar tablas en un post?
Sugerencias y dudas sobre el Foro
soplo 8 3,404 Último mensaje 5 Julio 2004, 10:13 am
por Firos
Insertar tablas de BD en mi web. (Estancado)
PHP
WiseHidden 2 2,574 Último mensaje 23 Diciembre 2012, 19:33 pm
por WiseHidden
insertar en 2 tablas distintas
PHP
basickdagger 5 3,314 Último mensaje 30 Mayo 2014, 22:22 pm
por basickdagger
insertar datos de diferentes tablas con left join
Bases de Datos
gAb1 2 4,039 Último mensaje 31 Julio 2015, 20:55 pm
por fran800m
insertar en varias tablas fk y pk
Bases de Datos
bash 7 7,230 Último mensaje 29 Diciembre 2016, 13:40 pm
por crisoof
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines