0

submitID(主キー)というフィールドを含む送信のテーブルがあります

回答の表にsubmissionIDというフィールドがあります

私の目標は、16と39の両方が回答されたsubmissionIDを見つけることです

以下は私がこれまでに持っているものですが、私が望むことをしていないようです...多分JOINで間違った道を進んでいますか?多分私は内側の選択が必要ですか?

SELECT submissions.*, answer.answer, answer.submissionID FROM submissions JOIN answer USING(submissionID) WHERE (answer = 16 AND answer = '39')

ここにテーブル提出のスキームがあります

CREATE TABLE `submissions` (
  `submissionID` int(11) NOT NULL AUTO_INCREMENT,
  `sID` int(11) NOT NULL,
  `sendInfoTo` text NOT NULL,
  `userIP` text NOT NULL,
  `sendNotificationTo` text NOT NULL,
  PRIMARY KEY (`submissionID`)
) ENGINE=MyISAM AUTO_INCREMENT=1343314525 DEFAULT CHARSET=latin1$$

9'

HEREEは答えのスキームです

CREATE TABLE `answer` (
  `aID` int(11) NOT NULL AUTO_INCREMENT,
  `qtID` int(11) NOT NULL,
  `answer` text NOT NULL,
  `submissionID` int(11) NOT NULL,
  PRIMARY KEY (`aID`)
) ENGINE=MyISAM AUTO_INCREMENT=56247 DEFAULT CHARSET=latin1$$

送信テーブルは一意の送信IDを保持します

回答テーブルには、提出物からのすべての回答が含まれています

たとえば、たくさんの質問があります。質問1の答えは16で、質問2の答えは39である可能性があるため、16と39の両方が回答されたsubmissionIDを見つけたいと思います。

4

3 に答える 3

0

このようなもの:

SELECT 
    submissions.*
    , answer.answer
    , answer.submissionID 
FROM 
    submissions 
JOIN answer on submissions.submissionID = answer.submissionID
WHERE
    answer.answer IN (16,39)
于 2012-07-26T17:58:39.860 に答える
0

次のクエリを試してみてください。これが役立つかもしれません..

SELECT s.submissionID  FROM submissions s JOIN answer a USING(submissionID) WHERE a.answer IN (16,39)
于 2012-07-26T17:58:55.553 に答える
0

answer =18 と answer =39 の AND 条件が真になることはないため、次の方法で OR を使用できます。

  SELECT submissions.*, answer.answer, answer.submissionID FROM submissions JOIN answer ON  submissions.submissionID = answer.submissionID WHERE answer.answer ='16' OR answer.answer ='39'
于 2012-07-26T18:06:53.737 に答える