0

私はJavaScriptプログラムを持っています。このプログラムでは、「話そう」などと入力すると、質問テーブルからユーザーに質問をする質問関数に移動します。それは質問されていない質問をするだけです。

3つのテーブルを設定しました。

(questions)            (people)                (questionasked)
QID  Question           PID   Person           QID PID  Asked   Answer   

1   What is life?        1  Lindsay           1     1   N       ''.
2   Do you know Kate J?  2  Kate              2     1   Y       'Yes, Kate is cool'.

質問されたテーブルには、QIDとPIDの主キーが組み合わされているため、同じ質問が2回行われることはありません。

質問をするための良い方法は何ですか。質問の表には、20以上の質問が含まれている可能性があります。クエリを作成するphpファイルに与えられる変数は、名前だけです:name(ユーザーの名前)。例えば。

$query1 = "SELECT q.Question 
FROM questions q inner join questionsasked qa 
ON q.QID = qa.QID 
WHERE qa.Asked='N'";

ここに別のAND句を追加して確認できますか

     questionsasked inner join people on PID = people.PID AND people.Person = $name  ?

上記のクエリは何も返しません..SQLをさらに練習する必要があります..結果の最初の質問を返したいと思います。

OK私はこれに対する答えを主にvidyadharの答えに得、またJWからの「ORqa.Asked IS NULL」を組み合わせました。これは、実際に質問されない限り「questionsasked」テーブルに記入できない可能性があるため、良い点でした。質問の表を用意しておくのが最善の場合もあります。次に、質問に回答したら、質問の表に記入します。

私が使用している答えは次のとおりです。

 $query1 = "SELECT q.Question 
 FROM questions q
 INNER JOIN questionsasked qa 
 ON q.QID = qa.QID 
 INNER JOIN peopleiknow p
 ON qa.PID = p.PID
 WHERE qa.Asked='N' OR qa.Asked IS NULL
 AND p.Person = '$name'"; 

それ以上の微調整は大歓迎です。

実際、私はまだこれに問題があったので、テーブルを変更し、質問して、この質問のphpコードを示しました:修正が必要なPHPファイルのSQLクエリ

4

4 に答える 4

1

私はこれがうまくいくと思います

SELECTq.QuestionFROM質問q内部結合questionaskedqaON q.QID = qa.qid WHERE qa.asked ='N'

于 2013-01-11T05:35:08.023 に答える
0
SELECT  a.PID, f.Person,
        d.question
FROM
        (
            SELECT  a.PID, b.QID
            FROM    people a, questions b
        ) c 
        INNER JOIN questions d
            ON c.QID = d.QID
        INNER JOIN people f
            ON c.PID = f.PID
        LEFT JOIN questionasked e
            ON  c.QID = e.QID AND
                c.PID = e.PID
WHERE   e.Asked = 'N' OR e.Asked IS NULL
于 2013-01-11T05:45:05.430 に答える
0

この場合、INNERJOINを使用できます。チェックしてください

SELECT Q.Question
FROM questions Q INNER JOIN questionasked A ON Q.QID=A.QID
    INNER JOIN people P ON A.PID=P.PID
WHERE A.QID= 'Question ID' AND
    A.PID='Person ID' AND
    A.Asked='Y'
于 2013-01-11T05:46:09.503 に答える
0

私はあなたが多かれ少なかれ同じトピックを持っているあなたのPHPの質問を見ればこの問題は解決されるべきだと思います。

ご挨拶

マーティン

于 2013-01-11T12:42:00.887 に答える