Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Cioouw en 20 Abril 2010, 04:19 am



Título: [SOL] Insert into select ... mysql
Publicado por: Cioouw en 20 Abril 2010, 04:19 am
Quisiera insertar de la siguiente forma

Insert into tabla_A (idtablaB,cualquier_caracter) select idtablaB from tablaB

Me muestra error porque falta definir el valor para la columna cualquier_caracter, como hago para solucionar este error.

Gracias.


Título: Re: Insert into select ... mysql
Publicado por: ^Tifa^ en 20 Abril 2010, 14:45 pm
Efectivamente te falta definir otra columna  :-*

Citar
Insert into tabla_A (idtablaB,cualquier_caracter) select idtablaB from tablaB

Inserta en la Tabla Tal(campo1, campo2) seleccioname campo1 de la tabla Cual...

Y campo2 se queda vacio????  Estas peticionando insertar 2 campos (campo1, campo2) sin embargo solo estas solicitando 1 de los dos (campo1).

 :P


Título: Re: Insert into select ... mysql
Publicado por: Cioouw en 20 Abril 2010, 15:44 pm
Eso es porque no se como insertar el segundo campo, el problema esta en que el segundo campo no se encuentra en ningun campo de la tabla_B sino que es una variable que yo defino....

Gracias.


Título: Re: Insert into select ... mysql
Publicado por: ^Tifa^ en 20 Abril 2010, 16:07 pm
Es que como lo estas haciendo ahi, el segundo campo esta sin valor alguno, sin embargo lo estas asignando aunque no tenga valor, y eso literalmente no se puede  :rolleyes:

No se con que lenguaje de programacion estas lidiando, pero supongamos que tienes una variable ya definida entonces seria algo como:


insert into tabla_A(idtablaB, $Tu_Variable) select  idtablaB from tablaB

Aca el campo idtablaB se rellenara con el campo idtablaB de la tablaB, y $Tu_Variable llenara el campo siguiente (el proximo) que le sigue a idtablaB.

Ahora ten pendiente que si este proximo campo tiene el atributo UNIQUE o es un PRIMARY KEY no aceptara valores repetidos... si es Primary Key nisiquiera nulos, si es UNIQUE puede aceptar nulos repetidos depende si le extendieron el atributo con un NOT NULL al campo al final.. pero ten esto muy en cuenta, otra cosa si tu variable tiene 1 solo valor ese valor se repetira hasta que se llene el otro campo, a no ser que hagas un for donde tu variable sea un arreglo.. pero entonces tu variable deberia tener una cantidad de valores iguales a los registros de idtablaB para que concuerden, sino habra algun que otro valor repetido o Nulo en el campo 'proximo'.


Título: Re: Insert into select ... mysql
Publicado por: Cioouw en 20 Abril 2010, 16:28 pm
Haber ...

mi tablaA tiene la siguiente estructura:

codigo int primary key auto_increment,
idtablaB int foreign key references,
idusuario int foreign key references

tengo un procedimiento donde se envia el idusuario, entonces he tratado lo siguiente:

create procedure ins(in idusu int)
begin
insert into tablaA(idtablaB,idusuario) select idtablaB from tablaB, idusu; ... pero esto me retorna error .. esperose entienda...
end


Título: Re: Insert into select ... mysql
Publicado por: ssccaann43 © en 20 Abril 2010, 16:59 pm
Haber ...

mi tablaA tiene la siguiente estructura:

codigo int primary key auto_increment,
idtablaB int foreign key references,
idusuario int foreign key references

tengo un procedimiento donde se envia el idusuario, entonces he tratado lo siguiente:

create procedure ins(in idusu int)
begin
insert into tablaA(idtablaB,idusuario) select idtablaB from tablaB, idusu; ... pero esto me retorna error .. esperose entienda...
end

El error te lo retorna porque estas indicando que haras el Insert en 2 campos de la tablaA  y en la tablaB solo muestras un solo campo... Presumo que es error de tipeo tuyo... Debería ser asi...

Código
  1. CREATE PROCEDURE ins(IN idusu INT)
  2. BEGIN
  3. INSERT INTO tablaA(idtablaB,idusuario) SELECT idtablaB, idusu FROM tablaB;
  4. END
  5.  


Título: Re: Insert into select ... mysql
Publicado por: Cioouw en 21 Abril 2010, 00:06 am
idusu no es un campo de la tablaB sino que es una variable que yo defino. Y no es error de tipeo ... lo escribi asi xq no se como hacer para insertar el campo idtablaB de la query con el valor de idusu.

 :rolleyes: :rolleyes:


Título: Re: Insert into select ... mysql
Publicado por: ^Tifa^ en 21 Abril 2010, 16:25 pm
Sabemos que no es un campo de la segunda tabla Cioouw  ;)  es una variable (El parametro de hecho que le pasas al procedimiento), pero por sintaxis debes ponerlo como ssccaann43 te ha recomendado  y porque no estas pasandole un segundo campo o campo inexistente de la Tabla2 sino que estas pasandole 1 valor como segundo campo... es todo  ;)


Título: Re: Insert into select ... mysql
Publicado por: ssccaann43 © en 21 Abril 2010, 17:13 pm
Sabemos que no es un campo de la segunda tabla Cioouw  ;)  es una variable (El parametro de hecho que le pasas al procedimiento), pero por sintaxis debes ponerlo como ssccaann43 te ha recomendado  y porque no estas pasandole un segundo campo o campo inexistente de la Tabla2 sino que estas pasandole 1 valor como segundo campo... es todo  ;)

Te me adelantaste mi ovejita negra...! Jaja XD


Título: Re: Insert into select ... mysql
Publicado por: Cioouw en 22 Abril 2010, 03:24 am
SOlucionado.-
Gracias.