Autor Tema: Ayuda con INSERT mysql  (Leído 4210 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Ayuda con INSERT mysql
« : septiembre 14, 2008, 02:28:57 pm »
Bunas eñores por aka nuevamente molestando

Estoy elaborando una aplicacion para el manejo de notas de una escuela bueno es por trabajo de horas sociales de la U

estoy usando
- PHP
- MYSQL
- Apache 2.0

bueno lo que queiro es llenar una tabla partiendo de una consulta de otras tablas

como asi

ejempleo

de las tablas 1 y 2 ---- llenar la tabla 3

el quiery esta asi (ejemplo solo de una tabla)

// seleeciona un grupo de registros que cumplen con una condicion en este caso selecciona todas las materias que son de segundo grado

$query_mat = sprintf(select * from c_materia where cod_grad = '2º');
$mat = mysql_query($query_mat, $database) or die (mysql_error())


esta onda me colecta un grupo de registros pero los cuales quiero usar para llenar una tabla llamada historial
como hago ese insert con todos estos registros

gracias desde ya

porfa alluda no le hayo
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado sortux

  • -^- Elite Silver -^-
  • Sv Full Member
  • *
  • Mensajes: 854
  • Si kieres Paz, prepárate para la Guerra!!!
    • \"
Re: Ayuda con INSERT mysql
« Respuesta #1 : septiembre 14, 2008, 03:37:31 pm »
Pero sabes imprimir los registros de esa consulta? Porque en lugar de imprimirlos hace un insert.

quedaria mas o menos asi:
Código: [Seleccionar]
<?php
$query_mat 
sprintf(select from c_materia where cod_grad '2º');
$mat mysql_query($query_mat$database) or die (mysql_error());

while(
$hay_registros=mysql_fetch_array($mat)){
     
$insert=mysql_query("INSERT INTO historial (campo1, campo2, campo3) VALUES($hay_registros['campo1'],$hay_registros['campo2'],$hay_registros['campo3'])");
}
if(
$insert){
     echo 
"Registros guardados satisfactoriamente";
}else{
     echo 
mysql_error();
}
?>


Espero te funcione  :thumbsup:
There are only 10 types people in the world: Those who understand binary and those who don't

[img alt="some alt text"]http://ubuntucounter.geekosophical.net/img/ubuntu-user2.php?user=4815

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con INSERT mysql
« Respuesta #2 : septiembre 14, 2008, 03:48:59 pm »
espero que te sirva, yo asi lo hago:

Código: [Seleccionar]
INSERT INTO tabla1
SELECT *
FROM tabla2

eso lo que haces es leer la tabla 2 e insertar cada registro en la tabla 1, por lo que si lo ocupas asi tenes que considerar:
-que la tabla 1 y tabla 2 tengan la misma cantidad de campos
-que los campos de la tabla 2 tengan el mismo tipo de dato que la tabla 1

tambien puedes jugar con el select:

Código: [Seleccionar]
INSERT INTO estudiantes(nombre_estudiante,carnet)
SELECT nombre,codigo
FROM alumnos

alli solo insertas dos campos, puede ser que la tabla alumnos tenga otros campos que nada que ver y tambien la tabla estudiantes, alli solo ingresas los campos que queres, tenienndo en cuenta que tengan el mismo tipo de dato, espero te ayude


EDIT: vi que lo quieres hacer desde dos tablas para llenar una tabla, mira otra solucion es como te dijo sortux, manejar dos resultset con cada consulta y luego ir recorriendo cada resultset e insertar en la tabla historial los valores que vas sacando de cada resultset, proba las dos formas, pero la que te digo de ocupar de un solo un insert con un select porque es a nivel de SQL, es mas rapido y te complicas menos que estar ocupando resultsets

como seria de dos tablas podrias ocupar:

Código: [Seleccionar]
INSERT INTO tabla1(campo1, campo2, campo3)
SELECT t2.campo1, t2.campo2, t3.campo3
FROM tabla2 t2
JOIN tabla3 t3
ON t2.campo4 = t3.campo4

y asi, solo que recuerda esto, que la misma cantidad de campos que resulten de tu select tienen que ser los del insert y que coincidan con el tipo de datos
« Última Modificación: septiembre 14, 2008, 03:54:44 pm por Camus de Acuario »

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: Ayuda con INSERT mysql
« Respuesta #3 : septiembre 14, 2008, 04:56:32 pm »
uta gracias hey pero aun no me sale esta mi$$rda






valla en la primera parte muestro los datos del alumno ingresado y en la parte de abajo muestro una tabla dinamica la cual es la consulta de todas las materias pertenecientes al grado al que pertenece el alumno

la consulta es esta

$query_mate = sprintf("SELECT cod_materia, materia, cod_grad FROM c_materia WHERE cod_grad = ''variable");
$mate = mysql_query($query_mate, $san_martin) or die(mysql_error());

y para hacer la tablita dinamica tengo este codigo

<?php do { ?>
                  <tr>
                    <td><div align="center"><span class="Estilo15"><?php echo $row_mate['cod_materia']; ?> </span></div></td>
                    <td><div align="left"><span class="Estilo15"><?php echo $row_mate['materia']; ?></span></div></td>
                    <td><div align="center"><span class="Estilo15"><?php echo $row_mate['cod_grad']; ?></span></div></td>
                  </tr>
             
                  <?php } while ($row_mate = mysql_fetch_assoc($mate)); ?>

pero no puedo hacer el insert.... de esos datos que muestro a la tabla historial la cual almacenara:

codigo de alumno, codigo_materia, codigo_grado, y los campos nota los cuales deben tener cero en este puntp

hey ayuda please

hey CAMUS tu quiery me parece bien pero en PHP me quede corto para pasarlo  :sorry:

entonces lo que kiero hacer es: que al clickar en Almacenar el valor de la seleccion mas el codigo del alumno
« Última Modificación: septiembre 14, 2008, 05:11:12 pm por Darkness »
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con INSERT mysql
« Respuesta #4 : septiembre 15, 2008, 12:10:11 am »
vaya mira lo que tenes que hacer es armar tu query para insertar,

no has puesto la consulta con la que obtenes el alumno, supongo que con los datos que sale en la imagen, seria algo asi:

Código: [Seleccionar]
SELECT codigo_alumno, nombres, apellidos, grado_alumno, seccion_alumno, turno_alumno
FROM    alumnos
WHERE  codigo_alumno = "variable 2"

y el codigo de las materias que dijiste esta asi:

Código: [Seleccionar]
SELECT cod_materia, materia, cod_grad
FROM    c_materia
WHERE  cod_grad = ''variable 1"

para la insercion seria algo asi:

Código: [Seleccionar]
INSERT
INTO    historial(codigo_alumno,cod_materia,materia,cod_grado,nota1)
SELECT a.codigo_alumno, m.cod_materia, m.materia, m.cod_grad, IFNULL(x.alguna_columna_que_sabes_que_siempre_es_null,0)
FROM    c_materia m, alumnos e, alguna_tabla_con_columna_null x
WHERE  cod_grad = ''variable 1"
AND      codigo_alumno = "variable 2"

espero que me hayas entendido con la parte de las notas, ocupas IFNULL para examinar un valor null y reemplazarlo con un cero y ese cero es el que insertar, probra primero el query en mysql para ver si te funciona, si no, escribi y vemos como lo solucionamos

ahora no tengo mysql instalado ni oracle, no se si se podria usar un

SELECT 0 AS cero FROM DUAL, pero nunca he ocupado la tabla dual en un JOIN, asi que es de tratar, si se puede podria ser algo asi

Código: [Seleccionar]
INSERT
INTO    historial(codigo_alumno,cod_materia,materia,cod_grado,nota1)
SELECT a.codigo_alumno, m.cod_materia, m.materia, m.cod_grad, d.0
FROM    c_materia m, alumnos e, dual d
WHERE  cod_grad = ''variable 1"
AND      codigo_alumno = "variable 2"

probalo y me decis
« Última Modificación: septiembre 15, 2008, 12:17:00 am por Camus de Acuario »

Desconectado sortux

  • -^- Elite Silver -^-
  • Sv Full Member
  • *
  • Mensajes: 854
  • Si kieres Paz, prepárate para la Guerra!!!
    • \"
Re: Ayuda con INSERT mysql
« Respuesta #5 : septiembre 17, 2008, 10:28:00 am »
Probalo asi pues,

Código: [Seleccionar]
<?php
//se almacena el codigo de alumno
$cod_alum $variable;

//la consulta es esta

$query_mate sprintf("SELECT cod_materia, materia, cod_grad FROM c_materia WHERE cod_grad = '$cod_alum');
$mate = mysql_query($query_mate$san_martin) or die(mysql_error());

//y para hacer la tablita dinamica tengo este codigo

<?php do { ?>

                  <tr>
                    <td><div align="center"><span class="Estilo15"><?php echo $row_mate['cod_materia']; ?> </span></div></td>
                    <td><div align="left"><span class="Estilo15"><?php echo $row_mate['materia']; ?></span></div></td>
                    <td><div align="center"><span class="Estilo15"><?php echo $row_mate['cod_grad']; ?></span></div></td>
                  </tr>
             
                  <?php } while ($row_mate mysql_fetch_assoc($mate)); 

//entonces al darle almacenar haria esto
if(isset("$_POST['almacenar'])){
     while(
$row_mate=mysql_fetch_assoc($mate)){
          
$insert=mysql_query("INSERT INTO historial (cod_alumcod_materiacod_gradonotasVALUES($cod_alum$row_mate['cod_materia'], $row_mate['cod_grad'],$row['notas'])");
     }
}
if(
$insert){
     echo "
Registros guardados satisfactoriamente";
}else{
     echo mysql_error();
}

?>


PD: yo lo probe la primera parte (mi post anterior) y me funcionó  :big_boss:
There are only 10 types people in the world: Those who understand binary and those who don't

[img alt="some alt text"]http://ubuntucounter.geekosophical.net/img/ubuntu-user2.php?user=4815