Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: elshotta en Mayo 19, 2020, 06:37:49 PM

Título: [SOLUCIONADO] Duda sobre mysql - joins
Publicado por: elshotta en Mayo 19, 2020, 06:37:49 PM
Hola a todos,
estoy intentando hacer un join entre dos tablas pero quiero que esa información del join la inserte en otra tabla
¿es eso posible con mysql?
gracias
Título: Re:Duda sobre mysql - joins
Publicado por: Mortal_Poison en Mayo 20, 2020, 12:18:54 AM
Hola elshotta (https://underc0de.org/foro/profile/elshotta/),

Claro que es posible. Podrías dejarnos si deseas, lo que has intentado y tu consulta, así se podría ajustar. Por ejemplo, haces primero un INSERT, luego un SELECT contiguo al INNER JOIN.

Un saludo.
Título: Re:Duda sobre mysql - joins
Publicado por: elshotta en Mayo 20, 2020, 02:18:57 AM
Hola gracias por responder,
pues es que el profesor nos enseño a hacer un join y ponerlo en una vista pero yo necesito es tomar los datos y agregarlos a una tabla diferente pero al hacer el insert into no logro entender como debo poner los datos
Código (mysql) [Seleccionar]
INSERT INTO solicitudes
SELECT  C.nombre, C.apellido,  numero_caddie, categoria, CONCAT(J.nombre,'  ',J.apellido) "DATOS JUGADOR"
FROM caddies C
JOIN jugador J
ON C.Id_caddies=J.Id_jugador

Aca muestro la estructura de la tabla a la que quiero ingresar los datos tomados del join
Código (mysql) [Seleccionar]
create table Solicitudes(   
    Id_solicitud int AUTO_INCREMENT primary key,
    Id_caddie int,
    nombre_caddie varchar(30),
    apellido_caddie varchar(30),
    numero_caddie int(3),
    categoria_caddie varchar(15),
    Id_jugador int,
   nombre_jugador varchar(30),
   apellido_jugador varchar(30),
    estado_caddie int(1),
    FOREIGN KEY (Id_caddie)REFERENCES Caddies(Id_caddies),
    FOREIGN KEY (Id_jugador) REFERENCES Jugador(Id_jugador)
   
   
    );
Título: Re:Duda sobre mysql - joins
Publicado por: DtxdF en Mayo 20, 2020, 07:29:20 AM
Concurso ganador:

Para hacer más realista el ejemplo (y quizás un poco complejo), en este tutorial se le mostrará cómo insertar registros de MySQL (sin usar un lenguaje de programación) mientras usa 'JOIN' en una suposición. Habrá cosas tenebrosas (y quizá nuevas), pero estoy seguro que se le responderá su duda, mientras que lo que no entienda, se lo dejó al poder de su propia investigación.

Creación de tablas:

Código (mysql) [Seleccionar]
/* Creamos una tabla para los que deseen participar */
CREATE TABLE inscription (
  id int NOT NULL AUTO_INCREMENT,
  name varchar(30) NOT NULL,
  lastname varchar(50) NOT NULL,
  age int NOT NULL,
  PRIMARY KEY (id)
);

/* Creamos una tabla para los tickets */
CREATE TABLE tickets (
  id_ticket int NOT NULL AUTO_INCREMENT,
  id int NOT NULL,
  ticket char(5) NOT NULL,
  PRIMARY KEY (id_ticket),
  FOREIGN KEY (id) REFERENCES inscription (id) ON DELETE RESTRICT ON UPDATE RESTRICT
);

/* Creamos una tabla para los ganadores */
create table winners (
  name varchar(30) not null,
  lastname varchar(50) not null,
  age int not null,
  win BOOL not null,
  ticket char(5) not null
);


Inserción de registros:

Primero insertamos los participantes:

Código (mysql) [Seleccionar]
/* Se insertan 3 participantes */
INSERT INTO inscription(name, lastname, age) VALUES("Jesús", "Colmenares", 17);
INSERT INTO inscription(name, lastname, age) VALUES("Josef", "Naranjo", 17);
INSERT INTO inscription(name, lastname, age) VALUES("Nikola", "Tesla", 86);


Ahora insertamos los tickets para los participantes:

Código (mysql) [Seleccionar]
INSERT INTO tickets(id, ticket) SELECT id, HEX(round(rand() * 1000000)) as ticket FROM inscription;

Ahora observamos quién o quiénes son los ganadores (insertamos los datos usando JOIN):

Código (mysql) [Seleccionar]
INSERT INTO winners(name, lastname, age, win, ticket) SELECT inscription.name, inscription.lastname, inscription.age, round(rand()), tickets.ticket FROM inscription JOIN tickets WHERE inscription.id = tickets.id;

tambores...

Código (text) [Seleccionar]
+--------+------------+-----+-----+--------+
| name   | lastname   | age | win | ticket |
+--------+------------+-----+-----+--------+
| Josef  | Naranjo    |  17 |   0 | 93364  |
| Jesús  | Colmenares |  17 |   0 | 84AFF  |
| Nikola | Tesla      |  86 |   1 | DDCCF  |
+--------+------------+-----+-----+--------+
3 rows in set (0.000 sec)


~ DtxdF
Título: Re:Duda sobre mysql - joins
Publicado por: elshotta en Mayo 21, 2020, 08:55:07 PM
Muchas gracias,
si es exactamente lo que estaba pidiendo, ya pueden dar por solucionado el post.
gracias