2015-10-15 4 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

Возможный дубликат [Вставить в таблицу выберите из таблицы a и таблицы b где] (http://stackoverflow.com/questions/20137183/insert-into-table-select-from-table-a-and-table-b- где) – Naruto

+0

OT: Лучше, если вы избегаете/проверяете ввод, прежде чем бросать его в SQL-запрос. –

ответ

1

Выполнение двух отдельных запросов с PHP и вставляя результат по строкам в базе данных не очень эффективен, и это очень много тяжелой работы. Вместо этого вы можете сделать использование INSERT SELECT syntax

с вкладышем ... 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 
Смежные вопросы