1

私はアンケートを構築しており、3 つのテーブルがusersあります。questionsanswersanswers

私のデータ構造は次のようなものです:

CREATE TABLE users (
    id INT NOT NULL, 
    name VARCHAR(255),
    PRIMARY KEY (id)
    )

CREATE TABLE questions (
    id INT NOT NULL, 
    text VARCHAR(255), 
    PRIMARY KEY (id)
    )

CREATE TABLE answers (
    id INT NOT NULL, 
    id_q INT NOT NULL,
    id_u INT NOT NULL,
    answer VARCHAR(255),
    PRIMARY KEY (id),
    FOREIGN KEY (id_q) REFERENCES questions(id),
    FOREIGN KEY (id_u) REFERENCES users(id)
    )

私はいくつかの初歩的なことを試してみましたが、LEFT JOIN役に立ちませんでした。ORDER BY RAND() LIMIT 0,1問題のランダム性の部分に使用しました。これは思ったほど簡単ではないと思います。(私はSQLを独学しています..まだ知らないサブクエリのいずれかを使用する必要がありますか?)

指名されたユーザーからの対応する回答がないランダムな質問を選択するように MySQL を作成するにはどうすればよいですか?

4

1 に答える 1

3

あなたは正しい軌道に乗っていましたLEFT JOIN...

INNER JOINこれを使用して、 withの逆選択を行うことができますWHERE column IS NULL。それはとても簡単です:

SELECT    q.*
FROM      questions q
LEFT JOIN answers a ON q.id = a.id_q AND a.id_u = <user id here>
WHERE     a.id IS NULL
ORDER BY  RAND()
LIMIT     1
于 2012-08-25T09:56:17.553 に答える