1

調査からの回答を格納するテーブルがあり、mysql にクエリを実行して、回答フィールドが 16 または 20 の誰かが調査に回答したかどうかを教えようとしています。

私はmysqlステートメントのために以下を持っています

SELECT DISTINCT(submissionID) as submissionID FROM answer 
WHERE EXISTS (
    SELECT *
    FROM answer
    WHERE submissionID = submissionID AND (answer = '16' OR answer = '20')

)

ここで編集

申し訳ありませんが、私は自分の質問を正しく言ったとは思わないので、ここに私のテーブル構造があります:

CREATE TABLE IF NOT EXISTS `answer` (
  `aID` int(11) NOT NULL AUTO_INCREMENT,
  `sID` int(11) NOT NULL,
  `qtID` int(11) NOT NULL,
  `answer` text NOT NULL,
  `userIP` text NOT NULL,
  `submissionID` int(11) NOT NULL,
  PRIMARY KEY (`aID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=422 ;
  1. aID与えられたすべての回答の一意のIDです
  2. sIDは調査 ID です (複数の調査がある可能性があるため)
  3. qtIDquestionID の値です
  4. answerは、ユーザーがqtIDこのアンケートでこれに与えた回答です
  5. userIP自己説明可能です
  6. submissionID各提出物に与えられた ID

したがって、このテーブルには 5 つの一意の送信 ID があることはわかっていますがsubmssionID、回答フィールド =は 1 つしか16ありません。20

4

4 に答える 4

1

クエリが非常に複雑だと思います。これを試してください。

SELECT DISTINCT submissionID FROM answer 
WHERE answer IN ('16', '20');
于 2012-06-04T17:29:27.597 に答える
0

「ここでの私の誤動作は何ですか?」

サブクエリを外部クエリに関連付ける条件:

submissionID = submissionID

常に真実です。とにかく実際にそれが必要だとは思わないので、次のように書いてみませんか。

SELECT DISTINCT submissionID 
FROM answer 
WHERE answer = '16' OR answer = '20'

しかし、あなたが私たちにすべての情報を提供していないように感じます。たとえば、元のクエリには、特定の質問への回答に限定するものは何もありません。もちろん、質問が1つしかない場合は可能ですが、それはあなたの意図したことではないと感じています。手の込んだ...

于 2012-06-04T17:29:21.890 に答える
0

どちらかのfrom句の回答テーブルのエイリアスが必要だと思います。このような...

SELECT DISTINCT(submissionID) as submissionID FROM answer a 
WHERE EXISTS (
    SELECT *
    FROM answer
    WHERE submissionID = a.submissionID AND (answer = '16' OR answer = '20')

)
于 2012-06-04T17:30:59.077 に答える
0

これが元のクエリです

SELECT DISTINCT(submissionID) as submissionID FROM answer 
WHERE EXISTS (
    SELECT *
    FROM answer
    WHERE submissionID = submissionID AND (answer = '16' OR answer = '20')

)

それらを関連付けるためにテーブルにエイリアスを追加する必要があります

SELECT DISTINCT(submissionID) as submissionID FROM answer B
WHERE EXISTS (
    SELECT *
    FROM answer A
    WHERE A,submissionID = B.submissionID AND (answer = '16' OR answer = '20')

)
于 2012-06-04T17:32:41.453 に答える