2015-10-15 131 views
0

我是数据库的初学者,我一直试图将数据从一张表插入另一张表。 我有以下代码:将数据从两张表插入到另一张表中

$codigoAlumno = $_GET['txtValidarCodigo']; 
$codigoMateria = $_GET['txtValidarMateria']; 

if($codigoAlumno && $codigoMateria){ 

include('conexion.php'); 
//GUARDAR COINCIDENCIA CON CODIGOS 

$query = mysql_query("SELECT * FROM cat_materia WHERE vchCodigoMateria='$codigoMateria'"); 
$rowStn = mysql_num_rows($query); 

$query_2 = mysql_query("SELECT * FROM cat_alumno WHERE iCodigoAlumno='$codigoAlumno'"); 
$rowSub=mysql_num_rows($query_2); 

if($rowSub == 0){ 

    echo "No coicide con ningun registro"; 

}else{ 

    if($rowStn == 0){ 

     echo "No coicide con ningun registro"; 

    }else{ 

     //AGREGAR DATOS 
     mysql_query("INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion)VALUES('$codigoAlumno','$codigoMateria'"); 
     $registro = mysql_affected_rows(); 


     echo 'Se ha completado el regisitro '.$registro; 

    } 
} 
}else{ 

    echo "Ingrese los campos"; 
} 

真的,我已经搜查不同waysto做,但没有奏效。

+2

您的代码或您打算作为示例或启动情况附加的任何内容尚未完成。 – klaar

+1

[Insert into table select from table a and table b where](http://stackoverflow.com/questions/20137183/insert-into-table-select-from-table-a-and-table-b-其中) – Naruto

+0

OT:如果在将其输入到SQL查询之前转义/验证输入,那么最好。 –

回答

1

执行与PHP两个单独的查询,并通过行插入结果行到数据库的效率不是很高,这是一个许多艰苦的工作。您可以改用INSERT SELECT syntax

使用INSERT ... SELECT,您可以快速地从一个或多个表中将许多行插入表中。

因此你的代码的很大一部分可以被取代:

INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion) 
SELECT col1, col2, col3 FROM cat_alumno 

照顾更换COL1,COL2,COL3适当。如果你想从两个cat_alumno和cat_materia

结合起来,你可以做

INSERT INTO cat_rel_alumno_materia(iCodigoAlumno,vchCodigoMateria,fCalificacion) 
SELECT c1.col1, c2.col2, c2.col3 FROM cat_alumno c1 INNER JOIN cat_materia c2 ON iCodigoAlumno = vchCodigoMateria 

注:因为你没有提到你的表是什么样的,上面的查询仅作为一般的准则。它不会按原样工作,您将不得不稍作修改以适应您的表格结构。

0

如果您试图将数据从一个表插入另一个表中,则可以使用INSERT INTO SELECT语句。

例子:

INSERT INTO table_1(col_1, col_2) 
SELECT col_1, col_2 FROM table_2 
相关问题