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

Inserciones con bucles en MYSQL

Estas en el tema de Inserciones con bucles en MYSQL en el foro de Mysql en Foros del Web. Hola buenos dias, me han pedido que rellene con datos de prueba mi base de datos MYSQL, tengo que rellenar 100 clientes de los cuales ...
  #1 (permalink)  
Antiguo 09/05/2012, 02:26
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta Inserciones con bucles en MYSQL

Hola buenos dias, me han pedido que rellene con datos de prueba mi base de datos MYSQL, tengo que rellenar 100 clientes de los cuales cada uno tiene 10 tiendas, si hago esto a mano puedo morir en el intento

como puedo hacer esto con un bucle, un abrazo y gracias
  #2 (permalink)  
Antiguo 09/05/2012, 03:58
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Inserciones con bucles en MYSQL

siento la breve explicacion de lo que queria hacer, se que hay a gente que le molesta, porque puede parecer que no he investigado lo suficiente, despues de ver que no era capaz de hacerlo directamente en msql, he creado un php con esto:

for ($x=2;$x<100;$x++){
$insert = "INSERT INTO....
mysql_query($insert,$conexion);

for ($i=0;$i<10;$i++){
$insert2 = "INSERT INTO ....
mysql_query($insert2,$conexion);

}

}

no salta errores pero no me hace nada XD, es un poco frustrante la verdad, un abrazo
  #3 (permalink)  
Antiguo 09/05/2012, 04:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Inserciones con bucles en MYSQL

Esa es la mejor forma de hacerlo o la mas fàcil ya que es una cosa que no se va a repetir.

Este és el foro de MySql y el error supongo que lo debes tener en php que no es objeto de este foro...

http://php.net/manual/es/function.mysql-query.php

(Estoy suponiendo que las querys las construyes bien)

Código PHP:
Ver original
  1. for ($x=2;$x<100;$x++){
  2.          $insert = "INSERT INTO....";
  3.          echo $insert."<br />";
  4.          $result = mysql_query($insert,$conexion);
  5.          if (!$result) {
  6.              die('Invalid query Tipo 1: ' . mysql_error());
  7.         }else{
  8.               for ($i=0;$i<10;$i++){
  9.                     $insert2 = "INSERT INTO ....";
  10.                     echo $insert2."<br />";
  11.                     $result2 = mysql_query($insert2,$conexion);
  12.                     if (!$result2) {
  13.                          die('Invalid query Tipo 2: ' . mysql_error());
  14.                    }
  15.           }
  16. }

Esto puede ayudarte a ver que esta pasando.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 09/05/2012, 05:08
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Inserciones con bucles en MYSQL

gracias por tu pronta respuesta, siento lo del error de foro, pero ya dije que mi intención en un principio era hacerlo directamente en MySQL, pero no encontre forma, he probado tu codigo quimfvy me ha desvelado el error, suele ser siempre lo mismo, un campo de la base de datos que era obligatorio y no lo introducia muchas gracias

Error solucionado
  #5 (permalink)  
Antiguo 09/05/2012, 08:03
 
Fecha de Ingreso: mayo-2012
Mensajes: 42
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Inserciones con bucles en MYSQL

Hola 60NZ4,

No has dado muchos datos para poder resolver el problema en condiciones, pero supongo que habrá una FK entre clientes y tiendas. Esto ya complica un poco el asunto porque primero deben estar los clientes para poder añadir las tiendas, por lo que serán 2 instrucciones las que tengas que meter manualmente.

Te dejo el código.

Primero creamos la base de datos:
Código:
-- Creamos la DB
drop schema if exists data;
create schema data;
use data;

-- Creamos las tablas
create table clientes (
        id_cli int primary key auto_increment,
        nombre varchar(50)
        );
        
create table tiendas (
        id_tie int primary key auto_increment,
        nombre varchar(50),
        fk_id_cli int
        );

-- Creamos la FK
alter table tiendas add constraint fk_cliente foreign key (fk_id_cli) references clientes(id_cli);
Ahora creamos los procedimientos:
Código:
delimiter $$

-- Creamos un procedimiento por el cual añadiremos clientes
create procedure sp_datos_clientes (int_datos int)
        begin
                declare i int default 0;
                declare i_tot int default 0;
                
                set i=(select count(id_cli) from clientes)+1;
                set i_tot=i+int_datos;
                
                repeat
                        insert into clientes values(null,concat('Cliente ',i));
                        set i=i+1;
                until i >= i_tot end repeat;
end$$

-- Creamos un procedimiento por el cual añadiremos tiendas a los clientes
create procedure sp_datos_tiendas(n_tiendas int)
        begin
                declare cli int default 0;
                declare cli_tot int default 0;
                declare i int default 1;
                
                set cli=((select distinct count(fk_id_cli) from tiendas)/10)+1;
                set cli_tot=cli+n_tiendas;
                
                repeat
                        repeat
                                insert into tiendas values(null,concat('Tienda ',i),cli);
                                set i=i+1;
                        until i >10 end repeat;
                        set cli=cli+1;
                        set i=1;
                until cli>=cli_tot end repeat;
end $$

delimiter ;
Y por último los ejecutamos:
Código:
call sp_datos_clientes(30);
call sp_datos_tiendas(30);
¡OJO! El argumento debe ser el mismo en las 2 llamadas, si no no se creará todo correctamente y puede que te de errores. Eso si, las puedes ejecutar todas las veces que quieras. Las dos seguidas (eso si), y con el mismo argumento (30 o 20 o 100 o el que sea).

¡Un saludo!
  #6 (permalink)  
Antiguo 09/05/2012, 08:47
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Inserciones con bucles en MYSQL

gracias davikt pero no precisaba de un codigo tan complicado, con la informacion facilitada por quimfv me era suficiente, aun asi leere y probare tu codigo para seguir mejorando, muchas gracias por tu tiempo un abrazo
  #7 (permalink)  
Antiguo 09/05/2012, 13:01
 
Fecha de Ingreso: mayo-2012
Mensajes: 42
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Inserciones con bucles en MYSQL

Hola 60NZ4,

Es SQL puro y duro, y el resultado son 2 tablas llenas de información de pruebas. Échale un ojo, si no entiendes algo me mandas un mp.

¡Un saludo!
  #8 (permalink)  
Antiguo 09/05/2012, 14:25
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Inserciones con bucles en MYSQL

como comenta davidkt puedes impremetar la funcion a travez de un trigger en el insert de los clientes y asi en automatico se insertarian a las tablas de las tiendas

Etiquetas: bucles, sql
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 08:33.