Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

insert INTO dentro de un insert into

Estas en el tema de insert INTO dentro de un insert into en el foro de Mysql en Foros del Web. Buenas Amigos tengo un problemilla tengo que insertar una fila en mysql rescatarel id creado y meterdlo en otra tabla algo asi Código PHP: $sql ...
  #1 (permalink)  
Antiguo 25/08/2012, 11:02
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
insert INTO dentro de un insert into

Buenas Amigos tengo un problemilla
tengo que insertar una fila en mysql rescatarel id creado y meterdlo en otra tabla algo asi

Código PHP:
$sql='INSERT INTO '.PREFIX.'product_attribute_combination (    id_attribute, id_product_attribute ) VALUES';
                
$ini true;
                foreach(
$pro['sub'] as $sub){
                    if(
$ini){ $ini=false;}else{$sql.=',';}
                    
$sql.='( "'.$sub['tallas'].'",
                         INSERT INTO '
.PREFIX.'product_attribute (    id_product, reference, price, quantity, minimal_quantity) VALUES 
                         ("'
.$id_product.'","'.(self::reference_encode($pro['sku']).'-'.$sub['tallas']).'" ,"'.$price.'","'.$sub['qty'].'",1 )
                      )'
;
                }
                 
BD::E($sql); 
Si hago esto me da error no se como pudo hacerlo

gracias
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #2 (permalink)  
Antiguo 25/08/2012, 12:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insert INTO dentro de un insert into

Cita:
Si hago esto me da error
Mira, estás mezclando PHP, variables de PHP y SQL embebido. A simple vista es dificil saber si el error que dices (y que no estás posteando) está relacionado con lo que PHP (que es ajeno a este foro) pone, o es estrictamente de SQL.
Por lo que parece, intentando entender esa melange de PHP, da toda la impresión de que las sentencias se construyen mal. Y eso sería un error de programación.
Pero sin saber qué error devuelve la ejecución, no estoy seguro.
Postea el mensaje de error y veremos desde allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/08/2012, 17:08
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: insert INTO dentro de un insert into

Buenas gracias por responder el caso es que quiero hacer es insertar unos datos en una tabla y me devuelva el Id y a su vez se ese id se inserte en otra tabla, algo como esto

Código PHP:

INSERT INTO product_attribute_combination 
id_attributeid_product_attribute VALUES
("1"FUNCION PARA QUE INSERTE UN VALOR Y DEVUELVA UN ID  => INSERT INTO product_attribute (id_productVALUES ("10000") ),
(
"2"FUNCION PARA QUE INSERTE UN VALOR Y DEVUELVA UN ID  => INSERT INTO product_attribute (id_productVALUES ("10000") ),
(
"3"FUNCION PARA QUE INSERTE UN VALOR Y DEVUELVA UN ID  => INSERT INTO product_attribute (id_productVALUES ("10000") ) 
gracias
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #4 (permalink)  
Antiguo 26/08/2012, 17:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: insert INTO dentro de un insert into

Vamos a ver si entiendo lo que intentas...
- Tienes una tabla de atributos de productos.
- Tienes además una tabla que relaciona cada producto con un conjunto de N atributos.
- Lo que quieres hacer es realizar un INSERT en la segunda tabla que al mismo tiempo obtenga el segundo ID (del atributo) con una función o SP que inserte el valor en la primera y obtenga el ID generado para que el INSERT de la segunda lo use...
¿Es así?

Si es así, lamento decirte que eso no va a funcionar. La restricción de FK de la segunda tabla se disparará antes que el INSERT de la primer tabla y generará un error por violación de FK en la primera tabla.

Si lo que quieres hacer es que se llame a una sola sentencia desde el lenguaje de programación, y que esa sentencia haga las dos tareas como una sola, es fácil: Usa stored procedures.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/08/2012, 17:37
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: insert INTO dentro de un insert into

si lo separo si se puede el problema es que tengo que hacer que cerca de 30000 productos con sus respectivos atributos se inserten si lo hago me dispara el error de maximo tiempo asi que tengo que optimizar el maximo de consultas he inserciones esta es la parte que me esta dando problemas XD bueno otra cosilla no se si se podria crear una especie de array o variable en el que temporalmente se mantenga el id y lo rescate para luego insertarlo algo como esto

Código PHP:
variable1 INSERT INTO product_attribute (id_productVALUES ("10000");
variable2 INSERT INTO product_attribute (id_productVALUES ("10000");
variable3 INSERT INTO product_attribute (id_productVALUES ("10000");
INSERT INTO product_attribute_combination id_attributeid_product_attribute VALUES
("1",variable1),
(
"2",variable2),
(
"3",variable3
o como array mejor

Código PHP:
variablearray INSERT INTO product_attribute (id_productVALUES ("10000"),("10000"),("10000");

INSERT INTO product_attribute_combination id_attributeid_product_attribute VALUES
("1",variablearray[0]),
(
"2",variablearray[1]),
(
"3",variablearray[2]) 
se podría?
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Etiquetas: insert, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:52.