(questions
)というテーブルからランダムな列(url
)を取得するMySQLi文を作成しようとしています。しかし、私はちょうどランダムを望んでいませんurl
。このステートメントは、tracking
という別のテーブルを含む3つの条件に依存します。 tracking
は、3つの列(user_id
,q_id
,answer
)を含みます。だから最終的に私はユーザーがまだ答えていないすべてのurls
を検索したい。たとえば、ユーザーが質問に既に回答している場合は、 q_id: 2
answer: 1
となります。このステートメントを実行すると、q_id: 2
はランダムurls
の1つであってはなりません。 q_id
も主キーであるquestions
であることを指摘することも重要です。ランダムな列を取得するために左結合が機能しない
私はこの声明を試してみましたが、それはいくつかの理由のために働いていない:
$values = $db->query("
SELECT url
FROM questions
LEFT
JOIN tracking
ON tracking.user_id = '$id'
AND questions.q_id != tracking.q_id
AND tracking.answer != NULL
ORDER
BY rand() LIMIT 1
");
は、どのように私はそれがとてもランダムurl
がユーザによって既に回答されている質問を除いて取得されることができますか?
うーん、私は述べてエラー取得しています: '非オブジェクト上のメンバ関数fetch_array()への呼び出し'クエリの後には、次のようにします: '$ rows = $ values-> fetch_array();' – user2896120
データベース環境で(可能であれば)直接クエリをテストします。少なくともmysqlエラー。 echo mysql_errno($ db)。 ":" mysql_error($ db)。 "\ n"; –
うーん、今は動作していますが、何らかの理由でまだクエリが返されているURLがクエリに残っています... – user2896120