2011-08-23 4 views
-1

좋아 (20 개) 필드이 필드가 나는 기본적으로 무작위로 10 개 질문을 선택하고 어떤 수학을하고 싶어 (10)mysql query & php - 이것을 달성하는 방법은?

중 다수 인 답변을 포함 q1, q2, q3 all the way to q20

라는 이름으로, 그래서, 테이블이 PHP는 페이지에 그것을 표시합니다. - 무작위로

$selector = "10218"; 
/* Work out how many rows to divide by */ 
$nr = mysql_query("SELECT * FROM `reviews` WHERE `selector` = '" . $selector . "'"); 
$nr = mysql_num_rows($nr); 
/* Get the total sum of answers for question 1 */ 
$q1 = mysql_query("SELECT sum(`q1`) AS `sum` FROM `reviews` WHERE `selector` = '" . $selector. "'"); 
$q1 = mysql_fetch_array($q1); 
$q1 = $q1['sum']/$nr; 
echo "q1 avg is " . round($q1); 

는 기본적으로, 우리는 10 개 질문이 작업을 수행 할 : 여기

는 내가 지금까지 가지고있는 것입니다.

우리는이 코드를 20 회 반복 작성하지 않아도됩니다. 매우 힘들고 질문을 포함하는 일종의 "배열"을 작성한 다음 각 루프마다 루프 10 무작위 질문으로 번?

q1 avg is 8 
q2 avg is 4 
q9 avg is 7 
q4 avg is 8 
q14 avg is 4 
q18 avg is 6 
q12 avg is 3 
q7 avg is 10 
q20 avg is 8 
q13 avg is 9 

어떻게 우리가이 일에 대해 갈 수

우리는 끝낼까요? 너가 나를 알게 해주지 않으면 너는 그것을 다시 말해봐.

+0

하지? 데이터베이스가 어떻게 구성되어야하는지는 거의 없습니다. 각 질문에 행을 사용하면 더 쉬울 것입니다 (전체적으로 1 개의 SQL 쿼리라고 생각합니다) – Dani

+0

달성하기 위해 노력하고있는 것은 무엇입니까? 어떤 질문을하고 있으며 원하는 출력은 무엇입니까? –

+0

@Dani - 예, 사용자 등급이기 때문에 각 질문마다 다른 열을 사용합니다. 질문은 X 장소에 대한 질문 그룹에 대한 '선택자'와 X 질문에 대한 사용자 대답에 대한 'userid'필드로 저장됩니다. 따라서 새로운 행은 더 많은 노력이 될 것입니다. – Latox

답변

0

이것에 대해 어떻게 : 그런데

// ... 
$query = 'SELECT'; 
for ($i = 1; $i <= 20; $i ++) { 
    $query .= ' SUM(`q' . $i . '`) AS `sum' . $i . '`'; 
} 
$query .= 'FROM `reviews` WHERE `selector` = "' . $selector . '"'; 

$q1 = mysql_query($query); 
$q1 = mysql_fetch_array($q1); 
foreach (array_rand($q1, 10) as $col => $sum) { 
    echo $col . ' is ' . $sum . '<br />'; 
} 

, 합계 당신은 각 질문에 대해 다른 열을 사용하여 평균 :

0

나는 당신이하려고하는 것이 매우 분명하다고 생각하지 않습니다. 당신에게 그런

create table reviews (
selector ???, 
question integer not null, /* e.g. 1, 2, 3, up to 20 */ 
answer integer not null); 

: 위의 의견에 제안한 것처럼

SELECT AVG(q1) FROM `reviews` WHERE `selector` = $selector; 

, 당신은 다음과 같습니다 aa는 데이터베이스에 더 좋을 수 있습니다

나는 다음과 같이 평균 응답을 얻을 수 있다고 생각 뭔가 할 수있어.

SELECT question, avg(answer) 
FROM reviews 
WHERE selector = $selector 
GROUP BY selector 
ORDER BY rand() 
LIMIT 10; 

'선택자'의 역할에 대해서는 확실하지 않지만 가짜라고 생각합니다.