2013-03-13 2 views
1

나는 MS Access에서이 쿼리를 실행하는 경우 :임의의 두 배로 결과

SELECT q2.questionText, Answers.answerText 
FROM Questions q2 INNER JOIN Answers ON q2.questionID = Answers.questionID 
WHERE q2.questionID IN (SELECT TOP 15 q.questionID 
FROM Questions q 
ORDER BY RND(q.questionID)); 

가끔 두 배로 업 얻을 answerText 행.

SELECT TOP 15 a.questionID 
FROM Questions a 
ORDER BY RND(a.questionID) 

을 그리고 위의 슈퍼 쿼리에서 숫자를 사용 :이의 출력에서 ​​숫자의 목록을 만들 경우 예상대로 작동

SELECT q2.questionText, Answers.answerText 
FROM Questions q2 INNER JOIN Answers ON q2.questionID = Answers.questionID 
WHERE q2.questionID IN (125, 7, 44, 119, 85, 189, 159, 167, 11, 50, 23, 96, 18, 99, 121); 

합니다. 나는 두 개의 questionID 필드에서 참조 무결성을 시행하고있다. 나는 반복적으로 테이블을 삭제하고 행을 추가 한 텍스트 파일 내보내기에서 테이블을 다시 가져 왔습니다. 어떻게 고치는 지?

+1

동일한 questionID에 대해 복수 응답이 없다고 확신합니까? – grahamj42

+0

경우에 따라 "예"및 "아니요"행 대신 "아니오"라고 표시됩니다. 때로는 질문에 대한 모든 가능한 답변의 1/2를 얻을 수 있습니다. –

+0

항상 15 개의 행을 사용합니까? 즉 TOP 15가 부속 조회가 아닌 전체 결과 세트에 적용됩니다. 복잡한 쿼리에서는 액세스가 완벽하지 않습니다. 그러나 문제는 훨씬 더 심한 곳이었습니다. – grahamj42

답변

0

"테이블을 반복적으로 삭제하고 텍스트 파일 내보내기에서 다시 가져 오기"작업은 결과에서 엉망이 된 응답에서 중복을 초래했습니다. Answers 테이블에서 중복을 제거하면 문제가 해결되었습니다. 귀중한 시간을 낭비해서 죄송합니다. 나는 지금까지 그것을 점검하는 것을 생각하지 않았다.

+0

이것은 grahamj42가 "당신이 동일한 질문에 대해 여러 답을 갖고 있지 않다는 것을 확신합니까?"라고 말한 것을 의미합니다. 나는 이제 깨닫는다. –

1

내게는 RND (a.QuestionID)가 두 번 이상 같은 숫자를 줄 수 있습니다. 나는 또한 "때로는 두 배로 늘린 answerText를 얻는다"는 것은 시간의 일부가 작동하고 두 번째 쿼리가 방금 작업 한 것임을 의미합니다.

아마 뭔가 :

SELECT TOP 15 questionID 도움이 될 수

RND (questionID) BY ORDER (DISTINCT TOP 30은 질문 로부터 을 a.questionID SELECT ),하지만 여전히하지 않습니다 FROM 똑같은 questionid의 배수를 얻을 수 있도록 보장합니다. 단지 기회가 매우 줄어들어 뚜렷하게 무작위로 생성 된 집합에서 적어도 15 개의 질문을 얻을 수 있어야합니다.

+0

이가 "예"와 "아니오"행 대신이 "예"행을 가져옵니다 INNER가 B의 답변 가입 나 AS 는 DISTINCT b.questionText를 선택 Answers.answerText는 b.questionID는 질문로부터 을 Answers.answerID. questionID = Answers.questionID Answers.questionID IN이 b.questionID, Answers.answerID ORDER BY ( SELECT TOP 15 질문 FROM RND (a.questionID하여 ORDER) 를 a.questionID)이고; 임의의 광기. –