この説明は少し長くて複雑に思えるかもしれませんが、ご容赦ください。本質的に、私がやりたいことは、データベース内の別の mysql テーブル (B) から mysql テーブル (A) を埋めることですが、そのためには、テーブル (A) に値を複製して、収容するのに十分なエントリがあるようにする必要があります。表 B の値について。
では、より具体的な例を
テーブルの外観
course_details テーブル
course_details_id | コース ID | year_id | Teacher_id +------------------+-----------+-----------+------ ------+ 1 1 設定予定 36 2 2 設定予定 54 3 3 設定予定 78 4 4 設定予定 23
年表
year_semester_id | 年 | 学期 +-----+------+---------+ 1 2012 1 2012年2月 3 2012 3 4 2012 4 2013年5月1日 2013年6月2日 2013年7月 3 2013年8月4日
テーブルをどのように見せたいか
course_details_id | コース ID | year_id | Teacher_id -------+-----------+---------+-------- --+ 1 1 1 36 2 1 2 36 3 1 3 36 4 1 4 36 5 1 5 36 6 1 6 58 7 1 7 36 8 1 8 47 9 2 1 54 10 2 2 54 11 2 3 54 12 2 4 67 13 2 5 67 14 2 6 54 15 2 7 54 16 2 8 54
コードの外観
<?php
require_once('open_db.php');
get_dbhandle();
$query_year = "SELECT * FROM year";
$result_year = mysql_query($query_year) or die(mysql_error());
$num_year_rows = mysql_num_rows($result_year);
$num_year_rows = ($num_year_rows - 1);
$query_yearid = "SELECT year_semester_id FROM year";
$result_yearid = mysql_query($query_yearid) or die(mysql_error());
$result_ccheck = mysql_query("SELECT course_id FROM courses");
while($row = mysql_fetch_array($result_ccheck))
{
$course_id = $row['course_id'];
for($i = $num_year_rows; $i >= 0; $i--)
{
$query_cdetails = "INSERT INTO course_details (course_id) VALUES ('$course_id')";
$result_cdetails = mysql_query($query_cdetails);
while($row = mysql_fetch_array($result_yearid))
{
$year_semester_id = $row['year_semester_id'];
$query = "INSERT INTO course_details(year_semester_id) SELECT year_semester_id FROM year";
$result = mysql_query($query);
}
}
}
?>
それが何をするのか、何をしたいのか:現在設定されているように、course_detailsテーブルの各course_idの複製を正しく作成して、yearsテーブルに存在するyear_semester_idの数と一致させます。これは完璧です。問題は、テーブル course_details の対応する各テーブル スロットに year_semester_id を挿入することです。
つまり、 course_id =1 、 year_semester_id=1、 course_id=1、 year_semester_id =2、.... course_id=1、 year_semester_id=8、 course_id=2、 year_semester_id=1、 course_id=2、 year_semester_id= の場合2......course_id=2、year semester_id =8、course_id=3、year_semester_id =1 など....そこに問題があります。
コードの仕組みを要約すると、years テーブル内の year_semester_id の数をカウントし、その数を 1 減算します。これは、course_id が現在 course_details テーブルにある回数であり、その数だけ複製します。この合計数 (重複) に元の course_id を加えたものが、year_semester_ids の合計になります。ここで、存在するすべての course_id に対して every year_semester_id を挿入し、各 course_id が考慮されるまでループします。ありがとうございました