Autor
|
Tema: insertar en 1 sql solo varios datos relacionado con varias tablas (Leído 4,198 veces)
|
tecasoft
Desconectado
Mensajes: 319
Ciberseguridad tecasoft.com
|
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. -- -- CLIENTES -- CREATE TABLE clientes( cod_cliente mediumint NOT NULL AUTO_INCREMENT, fecha VARCHAR(200), contacto VARCHAR(200), tipo VARCHAR(200), poblacion VARCHAR(200), provincia VARCHAR(200), pais VARCHAR(200), revisado VARCHAR(200), nombre_empresa VARCHAR(200), web VARCHAR(200), CONSTRAINT PKCL PRIMARY KEY (cod_cliente) ) ENGINE=InnoDB; -- -- CLIENTES_TELEFONOS -- CREATE TABLE clientes_telefonos( cod_telefonos INT NOT NULL AUTO_INCREMENT, clientes_telefonos VARCHAR(200), cod_tel mediumint, CONSTRAINT PKCLTE PRIMARY KEY (cod_telefonos), CONSTRAINT FKCLTE FOREIGN KEY (cod_tel) REFERENCES clientes(cod_cliente) ON DELETE CASCADE ) ENGINE=InnoDB; -- -- CLIENTES_TRATAMIENTO -- CREATE TABLE clientes_tratamiento( cod_tratamiento INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(200), apellidos VARCHAR(200), cod_tra mediumint, CONSTRAINT PKCLTR PRIMARY KEY (cod_tratamiento), CONSTRAINT FKCLTR FOREIGN KEY (cod_tra) REFERENCES clientes(cod_cliente) ON DELETE CASCADE ) ENGINE=InnoDB; -- -- CLIENTES_EMAILS -- CREATE TABLE clientes_emails( cod_emails INT NOT NULL AUTO_INCREMENT, clientes_emails VARCHAR(200), cod_email mediumint, CONSTRAINT PKCLEM PRIMARY KEY (cod_emails), CONSTRAINT FKCLEM FOREIGN KEY (cod_email) REFERENCES clientes(cod_cliente) ON DELETE CASCADE ) ENGINE=InnoDB;
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
Mensajes: 322
Se que puedo cambiar el futuro, pero no el pasado
|
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
Mensajes: 319
Ciberseguridad tecasoft.com
|
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
Mensajes: 322
Se que puedo cambiar el futuro, pero no el pasado
|
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: INSERT INTO tabla (campo1, campo2, campo3) VALUES (v1_1, v1_2, v1_3), (v2_1, v2_2, v2_3), (v3_1, v3_2, v3_3);
|
|
|
En línea
|
|
|
|
0roch1
Desconectado
Mensajes: 123
|
No es posible insertar en diferentes tablas con un solo query. Tienes dos opciones: 1. Crear un stored procedure Working with Stored ProceduresDELIMITER $$ CREATE PROCEDURE `ehn`.`registra_cliente`(IN vnombre_empresa VARCHAR(200), IN vemail VARCHAR(200)) BEGIN INSERT INTO clientes(nombre_empresa) VALUES(vnombre_empresa); INSERT INTO clientes_emails(clientes_emails, cod_email) VALUES(vemail, LAST_INSERT_ID()); END$$ DELIMITER ;
CALL registra_cliente('nombre empresa', 'email');
2. Escribir los insert en varias consultas. Con respecto a tu esquema te sugiero cambiar el nombre de tus campo s con llave foranea, por ejemplo. CREATE TABLE clientes( cod_cliente mediumint NOT NULL AUTO_INCREMENT, ... CONSTRAINT PKCL PRIMARY KEY (cod_cliente) ) ENGINE=InnoDB; CREATE TABLE clientes_emails( cod_emails INT NOT NULL AUTO_INCREMENT, ... cod_email mediumint, CONSTRAINT PKCLEM PRIMARY KEY (cod_emails), CONSTRAINT FKCLEM FOREIGN KEY (cod_email) REFERENCES clientes(cod_cliente) ON DELETE CASCADE ) ENGINE=InnoDB;
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
|
|
|
|
|
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,347
|
5 Julio 2004, 10:13 am
por Firos
|
|
|
Insertar tablas de BD en mi web. (Estancado)
PHP
|
WiseHidden
|
2
|
2,557
|
23 Diciembre 2012, 19:33 pm
por WiseHidden
|
|
|
insertar en 2 tablas distintas
PHP
|
basickdagger
|
5
|
3,286
|
30 Mayo 2014, 22:22 pm
por basickdagger
|
|
|
insertar datos de diferentes tablas con left join
Bases de Datos
|
gAb1
|
2
|
3,972
|
31 Julio 2015, 20:55 pm
por fran800m
|
|
|
insertar en varias tablas fk y pk
Bases de Datos
|
bash
|
7
|
7,162
|
29 Diciembre 2016, 13:40 pm
por crisoof
|
|