2014-03-26 3 views
0

우선 MySQL은 감가 상각 된 언어이지만 관리자가 사용한다고 주장합니다.여러 테이블의 데이터를 하나의 테이블에 삽입

데이터베이스에 3 개의 테이블이 있습니다. 그들은 : "students", "tutors", "match"입니다. 아래 쿼리 ($ query2)를 실행하면 해당 쿼리의 모든 조건이 완벽하게 일치하는지 확인하고 있습니다.

는 완벽하게 일치 할 때 나는 경기 테이블에 다음 삽입 할 :

"insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"; 

은 "일치"테이블은 열이 포함

match_id(auto incremented), tutor_id, student_id, school_id 

어떤 도움을 주시면 감사하겠습니다.

if(mysql_query($query2)){ 
    $check_availability = "select * 
          from tutors, students 
          where tutor_availability = '$student_availability' 
          AND (tutor_subject_1 = '$student_subject_1' 
          OR tutor_subject_1 = '$student_subject_2' 
          OR tutor_subject_2 = '$student_subject_2' 
          OR tutor_subject_2 = '$student_subject_1')";  

    $run_5 = mysql_query($check_availability); 

    if(mysql_num_rows($run_5)>0) { 

     echo "<script>alert('we have a match')</script>"; 
     my_sql_query($query3) = "insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"; 

     mysql_query($query3); 
    } else{ 
     echo "<script>alert('no match found')</script>"; 
    } 
} 
+0

MySQL은 ... 기능은 다음 뭐죠 문제 –

+0

입니다 * 어떠한 방식으로 사용되지 않는 언어, PHP는 mysql_로 무엇입니까? – user1844933

+0

값이 "일치"테이블에 들어 가지 않습니다 – bano590

답변

0

나는이 줄 잘못된 생각 :

my_sql_query($query3) = "insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"; 

함수 이름이 잘못 철자 및 매개 변수가 $query3하지만 실제 쿼리 안 : 기본적으로

mysql_query("insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"); 
+0

죄송합니다. 작은 실수였습니다. 수정했지만 아직 작동하지 않습니다 – bano590

0

당신이 이전 쿼리의 결과를 데이터베이스에 삽입합니다.

변화

$check_availability = "select * 
         from tutors, students 
         where tutor_availability = '$student_availability' 
         AND (tutor_subject_1 = '$student_subject_1' 
         OR tutor_subject_1 = '$student_subject_2' 
         OR tutor_subject_2 = '$student_subject_2' 
         OR tutor_subject_2 = '$student_subject_1')"; 

당신은 행을 통해 루프가

$check_availability = "insert into match (tutor_id, student_id, school_id) 
         select tutors.id, students.id, students.school_id 
         from tutors, students 
         where tutor_availability = '$student_availability' 
         AND (tutor_subject_1 = '$student_subject_1' 
         OR tutor_subject_1 = '$student_subject_2' 
         OR tutor_subject_2 = '$student_subject_2' 
         OR tutor_subject_2 = '$student_subject_1')"; 
+0

이 코드를 사용하면 더 이상 어떤 이유로 일치 항목을 찾을 수 없습니까? – bano590

+0

@ bano590 - 이것이 삽입 쿼리이며 선택되지는 않습니다. 일치하는 항목을 확인하려면 선택 항목을 실행 한 다음 행을 반복하고 삽입해야합니다. –

+0

이 경우 가장 좋은 방법은 무엇입니까? 나는 상당히 새로운 MySQL – bano590

0

에 값 삽입 얻을 :

if(mysql_query($query2)){ 
    $check_availability = "select * 
          from tutors, students 
          where tutor_availability = '$student_availability' 
          AND (tutor_subject_1 = '$student_subject_1' 
          OR tutor_subject_1 = '$student_subject_2' 
          OR tutor_subject_2 = '$student_subject_2' 
          OR tutor_subject_2 = '$student_subject_1')";  

    $run_5 = mysql_query($check_availability); 

    if(mysql_num_rows($run_5)>0) { 

     echo "<script>alert('we have a match')</script>"; 
     while($row = mysql_fetch_assoc($run_5)) { 
      $tutor_id = $row['tutor_id']; 
      $student_id = $row['student_id']; 
      $school_id = $row['school_id']; 
      mysql_query("insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"); 
     } 

    } else{ 
     echo "<script>alert('no match found')</script>"; 
    } 
} 

나는 정확한 필드 이름을 모르는 , 그러나 그것은 올바른 방향으로 당신을 가리켜 야합니다.

+0

을 사용하고있다.이 경우 쿼리 $ res는 무엇인가? – bano590

+0

@ bano590 $ res는 $ run_5 여야합니다. 죄송합니다. 예제 코드에서이를 수정했습니다. – Typoheads

+0

실제로 모든 필드 이름이 올바르지 만 여전히 작동하지 않습니다 – bano590

0

아마도 mysql_fetch_row ($ run_5)를 사용하고 tutor_id, student_id 및 school_id 만 추출하도록 select 쿼리를 변경하십시오.

if(mysql_query($query2)){ 
$check_availability = "select t.tutor_id, s.student_id, t.school_id 
         from t.tutors, s.students 
         where t.tutor_availability = '$student_availability' 
         AND (t.tutor_subject_1 = '$student_subject_1' 
         OR t.tutor_subject_1 = '$student_subject_2' 
         OR t.tutor_subject_2 = '$student_subject_2' 
         OR t.tutor_subject_2 = '$student_subject_1')";  

$run_5 = mysql_query($check_availability); 

if(mysql_num_rows($run_5)>0) { 

    echo "<script>alert('we have a match')</script>"; 
    while($row = mysql_fetch_row($run_5)) { 
     $tutor_id = $row[0]; 
     $student_id = $row[1]; 
     $school_id = $row[2]; 
     mysql_query("insert into match (tutor_id, student_id, school_id) values ('$tutor_id','$student_id','$school_id')"); 
    } 

} else{ 
    echo "<script>alert('no match found')</script>"; 
} 

}

+0

이 코드를 사용해 보았습니다. 원하는 답변에 가장 근접한 코드입니다. mysql_query ("tutor_id, student_id, school_id) 값 ('$ tutor_id', '$ student_id', '$ school_id')")에 문제가있는 것 같습니다. – bano590

관련 문제