0

受験した試験の詳細を保持するテーブルがあります。この表に入力された各試験は、1 組の受験者として入力されます。つまり、1 回の試験につき 2 名が実行されるため、1 回の試験につき 2 名が入力されます。各人は受験した試験ごとに固有の ID を持っていますが、各ペアには両方で同じ partner_id という値があります。

私がやろうとしているのは、そのテーブルからpartner_id値を抽出して、それらの値を使用してその人のパートナーを見つけ、その人が持っていたすべてのパートナーの試験結果の詳細をページに表示/エコーできるようにすることですで試験。

私がこれまでに試したことは次のとおりです。

$partner_ider = mysql_query("SELECT partner_id as value1 from exam WHERE Student_email='eating@gnomes.com'");
$row1 = mysql_fetch_array($partner_ider);

while($row1 = mysql_fetch_array($partner_ider))
{
    echo $row1['value1'];
}

この:

$result = mysql_query("SELECT * from exam WHERE Student_email='beating@dead.com'");
$row = mysql_fetch_array($result);

while ($row = mysql_fetch_array($result))
{
    echo $row['partner_id'];
}

これらが与える結果は、試験テーブルに 2 つのエントリがある電子メールの 2 です。私が探していたのは、この電子メールの試験レコードの 2 つの partner_id の値である 1、2 でした。メールを1つしか持っていない他の人に変更すると、何も返されません。

1, 2 の結果で私がしようとしているのは、これらの値を使用して元の人 (eating@gnomes.com) を除くすべての人を選択し、そのテーブルから詳細を表示することです。

私が求めているのは、これまでにこのようなことをしたことがないので、どうすれば上記を行うことができるでしょうか?

4

1 に答える 1

1

両方のコード スニペットで、2 行目に存在しないはずの mysql_fetch_array() があります。行をフェッチし、それを $row1 に入れ、内部ポインターをインクリメントします。

while で mysql_fetch_array() を呼び出すと、すべての行が処理されるまで、2 番目のレコード、次に 3 番目のレコードなどをフェッチします。

どちらの例でも、2 行目を削除して再試行する必要があります。

$partner_ider = mysql_query("SELECT partner_id as value1 from exam WHERE Student_email='eating@gnomes.com'");
//$row1 = mysql_fetch_array($partner_ider);

while($row1 = mysql_fetch_array($partner_ider))
{
    echo $row1['value1'];
}

テーブル構造が次の場合:

  • ID
  • 学生証
  • 学生の名前
  • Student_email
  • 学生_なんでも
  • パートナーID

SQL クエリは次のようになります。

SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE student_Email = 'eating@gnomes.com') AND Student_email <> 'eating@gnomes.com';

しかし、実際にはテーブルを分割する必要があります。2 つのエンティティ (学生と試験) と結合テーブルがあります。

学生

  • ID
  • 名前
  • Eメール

テスト

  • ID
  • 名前
  • (その他の試験データ)

学生団体

  • 試験ID
  • 学生証
  • グループ
于 2013-05-01T14:28:24.050 に答える