2012-08-25 3 views
1

임의 답이없는 일을 선택하고 세 개의 테이블이하기 : users는, questions는, answers는 사용자가 응답 한 각 질문에 대한 기록 (없이 레코드가 포함 answers, 그들은 대답하지 않은 경우를 아직 주어진 질문). 아무 소용이 내가 LEFT JOIN와 함께 몇 가지 기초적인 일을 시도했습니다SQL 내가 조사 일을 짓고 있어요

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) 
    ) 

등 :

내 데이터 구조는 다음과 같은 것입니다. 문제의 임의성 부분에 ORDER BY RAND() LIMIT 0,1을 사용했습니다. 나는 이것이 내가 생각했던 것만 큼 단순하지 않다고 생각하고있다. (나는 자신에게 SQL을 가르치고있다. 내가 아직 모르는 subquery 것들 중 하나를 사용해야 할까?)

MySQL을 작성하지 않고 무작위 질문을 선택하려면 어떻게해야합니까? 지정된 사용자의 해당 답변? 당신은 LEFT JOIN으로 궤도에 있었다

+0

또한 "question"이라는 단어가 포함 된 제목으로 질문을 게시 할 수 없기 때문에 질문 제목에 "thing"을 사용하는 것을 용서하십시오. C'est la vie :) – Erics

답변

3

...

당신은 WHERE column IS NULL와 함께 INNER JOIN의 역 선택을하는 데 사용할 수 있습니다. 이것은 간단합니다.

+0

Ahah, 나는 당신이 한 것을 보았습니다 - 당신은 WHERE 필터가 아닌 'answers.id_u' 특이성을 사용하여 조인 테이블을 만들었습니다. – Erics

관련 문제