2015-10-15 135 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 
相關問題