私は問題があります。
class_tbl、subject_tbl、および *student_tbl の3 つのテーブルがあります。class_tbl には 3 つの列 *"class_id、subject_id、および student_id".* があり、subject_tbl には 4 つの列 *"subject_id,subject_name,subject_yr,subject_sem"* があり、最後に *student_tbl には 2 つの列 "student_id および student_name".* があります。
class_tbl には次の行があります。
**[class_id || subject_id || student_id]**
|| 1001 || 2002 || 3003
|| 1002 || 2003 || 3003
|| 1003 || 2004 || 3003
subject_tbl には 5 つの行があります。
**[subject_id || subject_name || subject_yr || subject_sem]**
|| 2002 || Math || 2010 || 1st
|| 2003 || Science || 2010 || 1st
|| 2004 || History || 2010 || 1st
|| 2005 || PE || 2010 || 1st
|| 2006 || Social Studies || 2010 || 1st
student_tbl には 1 つの行があります: 実際の学生の数に応じて異なります
**[student_id || student_name]**
|| 3003 || John Parker
ここでの目標は、クエリが最後の 2 つの科目 (体育と社会科) をエコーして、それらを class_tbl に挿入できるようにすることです。エコーは、その学期と学年度中に 2 つの科目に 2 つのエントリがないことを教えてくれます。クエリは、class_tbl のエントリに既に含まれている数学、科学、および歴史のサブジェクトをエコーしません。その学期と年度の欠落している科目を照会してエコーするにはどうすればよいですか? 本当に思いつきません。助けてtnx!
ここのコードは、その学年と学期のすべての科目を表示します。
if (isset ($db1)&&$db1!=""){
}
<?php
$student_id = $_POST['student_id'];
$sem = $_POST['sem'];
$yr = $_POST['yr'];
$list = mysql_query("SELECT *
FROM
class_tbl
LEFT JOIN
subject_tbl
ON
class_tbl.subject_id = subject_tbl.subject ID
WHERE
student_id = '$student_id'
OR
subject_sem = '$sem'
OR
subject_yr = '$yr'
ORDER BY
subject_id asc");
while($row_list=mysql_fetch_assoc($list))
{
echo $row_list['subject_id'];
if($row_list['subject_id']==$db1){echo "selected"; }
echo $row_list['subject_name'];
}
出力例は次のようになります。
「体育と社会」の科目が 2 つ不足しています。