2011-04-27 6 views
-1

안녕하세요. 나는 테이블에 대한 SQL 쿼리를 작성하려는 :서버 측 스크립트가없는 SQL 데이터베이스 쿼리

여기
user_1(question_id int, option char(1)); 

는이 테이블에, 나는 question_id 무작위로 배열 된 데와 클라이언트가 서버에 이전 question_id를 보내드립니다. 그런 다음 클라이언트가 보낸 question_id 다음에 오는 테이블에 다음 question_id이 필요합니다.

서버 측 스크립팅으로이 작업을 수행 할 수 있지만 그 작업이 없으면 가능합니까? 내 말은 바로 다음에 question_id이있는 것을 의미합니다.

샘플 데이터 :

내가 제대로 이해하면
4, 'A' 
2, 'B' 
7, 'C' 

답변

1

다음에 어떤 질문을 할 것인지 결정할 방법이 없습니다. 순서없이 테이블을 쿼리하면 삽입 시간순으로 정렬 된 행 집합이있는 것처럼 보일 수 있습니다. 작은 테이블의 경우에도 마찬가지지만, 의존하지 않아야합니다. 공정한 금액의 레코드 삽입/삭제 또는 테이블 분석을 통해이 주문을 변경할 수 있으며 주문이 잘못됨으로 끝납니다. 데이터를 삽입 한 순서를 유지하는 다른 열이없는 경우에는 order by 절을 사용하지 않고 select를 수행 한 후에 바로 가져올 수 있다고 보장 할 수 없습니다.

0

...

SELECT MIN(question_id) FROM user_1 WHERE question_id > (value client sent) 

+0

하지만 question_id가 임의로 정렬됩니다. – codeomnitrix

+0

편집 된 질문을 샘플 데이터로 확인하십시오. – codeomnitrix

+0

@codeomnitrix - 다음 질문이 다음 연속 ID가 아닌 경우 어떻게 식별합니까? 어쩌면 당신은'question_order' 필드를 추가해야합니다. –

0
select id from question 
where id not in (already asked) 
order by rand() 
limit 0,1 

편집 : 업데이트 된 질문을보고하면, 답이 없다 - 방법. 그들이 와서 어떤 순서 지금 알 수있는 방법이 없기 때문에 당신은 질문의 순서를 설정합니다 다른 필드가 필요합니다. 당신은 UNORDERED 레코드 세트에 대한 같은 데이터베이스 테이블에 대해 생각해야

.

+0

안녕하세요. 이해할 수 없습니다. 먼저 나는 이전에 묻는 질문에 대한 기록이 없습니다. 그냥 마지막 질문의 아무것도. 또한이 쿼리가 무엇을하는지 이해할 수 없습니까? – codeomnitrix

+0

임의의 질문의 단일 ID를 반환합니다 (임의의 숫자 순). 당신은''(...)에없는 id ''부분을 남길 수 있습니다. 또는 임의의 다른 방법을 사용 하시겠습니까? 응, 내 대답을 업데이트 했어. –

+0

내 문제를 이해하지 못했다고 생각합니다. 샘플 데이터를 참조하십시오. 실제로 question_id는 랜덤 화되어 있으므로 무작위로 함수를 사용할 필요가 없습니다. 난 그냥 무작위로 배열 된 질문에서 다음 사용하지 않는 질문 싶습니다. – codeomnitrix