1
question table
========================
question_id
1
2
3
4


user_answer table
========================
user_id  question_id
33       2
44       4
33       1
44       3

このコードは質問 ID (2 と 1) を返します。テーブル question から他の質問 ID を取得したいので、結果を (3 と 4) にしたいのです。

   $fadi = mysql_query("SELECT * FROM question
         LEFT OUTER JOIN user_answer
           ON user_answer.question_id = question.question_id
              WHERE user_answer.user_id = 33");

   Print "<table border cellpadding=3>";
   while($info = mysql_fetch_array($fadi))
   { Print "<tr>"; 
    Print "<th>question </th> <td>".$info['question_id'] . "</td></tr>";
   }  Print "</table>"; }
4

3 に答える 3

2

あなたが探しているのは IS NULL という言葉だと思います:

$fadi = mysql_query("SELECT * FROM question
     LEFT OUTER JOIN user_answer
       ON user_answer.question_id = question.question_id
          AND user_answer.user_id = 33
       WHERE user_answer.question_id IS NULL");

質問テーブルから質問 ID を取得するだけで、さらに一歩進めることができます。

$fadi = mysql_query("SELECT question.question_id FROM question
     LEFT OUTER JOIN user_answer
       ON user_answer.question_id = question.question_id
          AND user_answer.user_id = 33
       WHERE user_answer.question_id IS NULL"); 
于 2013-01-15T23:23:10.220 に答える
1

追記:改良版。

  $fadi = mysql_query("SELECT * FROM question WHERE  question.question_id NOT IN (SELECT user_answer.question_id FROM user_answer WHERE user_answer.user_id = 33)");

   Print "<table border cellpadding=3>";
   while($info = mysql_fetch_array($fadi))
   { Print "<tr>"; 
    Print "<th>question </th> <td>".$info['question_id'] . "</td></tr>";
   }  Print "</table>"; }

MySQLi バージョン:

  $link = mysqli_connect($hostname, $username, $password, $database);
  if (!$link){ 
  echo('Unable to connect to database');
  }
  else{
  $fadi = mysqli_query("SELECT * FROM question WHERE  question.question_id NOT IN (SELECT user_answer.question_id FROM user_answer WHERE user_answer.user_id = 33)", $link);

   Print "<table border cellpadding=3>";
   while($info = mysqli_fetch_array($fadi,MYSQL_BOTH))
   { Print "<tr>"; 
    Print "<th>question </th> <td>".$info['question_id'] . "</td></tr>";
   }  Print "</table>"; }

  }
  mysqli_close($link);

実際に見てください:http://www.sqlfiddle.com/#!2/27b6f/21

于 2013-01-15T23:31:14.317 に答える
0

答えになる可能性があるのは、'question_id' 値を取得するためmysql_queryに使用したものと同じものをmysql_fetch_array取得し、最後に、質問の数がある場合 (そうでない場合は mysql カウントを使用できます)、php 関数array_diff()を使用して取得することです (からquestion_id の整数値の増分ソート配列、または「question」テーブルの question_id 値の配列から) まさにあなたが望むもの

于 2013-01-15T23:46:55.407 に答える