将数据从两个表插入到另一个表中

时间:2015-10-15 14:39:12

标签: php mysql database

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

$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";
}

真的,我搜索的方式不同,但没有任何效果。

2 个答案:

答案 0 :(得分: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

注意:由于您没有提到表格的内容,因此上述查询仅作为一般准则提供。它不会按原样运行,你必须对表格结构进行微调。

答案 1 :(得分:0)

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

示例:

INSERT INTO table_1(col_1, col_2)
SELECT col_1, col_2 FROM table_2