2015-01-23 2 views
0

저는 PHP에 비교적 익숙합니다. 다른 필드 이름으로 열의 평균을 반환하는 두 개의 쿼리가 있습니다.반환 된 mysql 쿼리에 가중 평균을 더하고 모든 데이터를 추가하십시오.

$engresults = $con->query("SELECT AVG(activity) as avgscore FROM combinedna WHERE coachname = '$coachname'");  
$timeresults = $con->query("SELECT AVG(timely) as avgtime FROM combinedna WHERE coachname = '$coachname'"); 

평균 제대로 반환 및 I : 나는 여기에 쿼리가 있습니다 ... 나는 그것이 동작하지 않습니다 ... 전체 점수에 대한 결과를 추가 한 후이 평균에 가중치를 추가 할 필요가 이 기능에 무게를 추가 할 수 있지만 추가 할 수 없습니다 두 함께

그때 함께 ... 난 그냥 '할 수있는 결과를 추가 초 제 0.10에 0.05를 추가 할 필요가
while($row = $engresults->fetch_assoc()) { 
    echo "<tr>"; 
    echo "<td>Did you identify an effective integrated activity?</td>"; 
    echo "<td><center>" .$row['avgscore'] *.05 . "</center></td>"; 
    echo "</tr>"; 
} 

while($row = $timeresults->fetch_assoc()) { 
    echo "<tr>"; 
    echo "<td>Did you spend the appropriate amount of time?</td>"; 
    echo "<td><center> " .$row['avgtime'] *.10 . "</center></td>"; 
    echo "</tr>"; 
} 

사용할 PHP를 파악하지 마십시오. 양해에 미리 감사와

+0

왜 'while'루프를 사용하고 있습니까? 귀하의 쿼리는 단지 하나의 행을 반환, 당신은 무엇을 루핑하고 있습니까? – Barmar

+0

while 루프를 제거하고 두 개의 단일 레코드의 데이터를 가져온 후에 두 평균의 내용을 두 개의 다른 변수에 저장 한 다음 함께 추가하십시오. – CBroe

+0

아 ... 완벽한. 고맙습니다 ... – Doc

답변

0

변수에 값을 넣은 다음 값을 추가하십시오.

$row = $engresults->fetch_assoc(); // No loop needed 
$avgscore_weighted = $row['avgscore'] * .05; 
$row = $timeresults->fetch_assoc(); 
$avgtime_weighted = $row['avgtime'] * .10; 
$weighted_sum = $avg_score_weighted + $avgtime_weighted; 

echo "<tr>"; 
echo "<td>Did you identify an effective integrated activity?</td>"; 
echo "<td><center>" .$avgscore_weighted . "</center></td>"; 
echo "</tr>"; 

echo "<tr>"; 
echo "<td>Did you spend the appropriate amount of time?</td>"; 
echo "<td><center> " .$avgtime_weighted . "</center></td>"; 
echo "</tr>"; 

echo "<tr>"; 
echo "<td>The total was: </td>"; 
echo "<td><center> " .$weighted_sum . "</center></td>"; 
echo "</tr>"; 
+0

끝내 주셔서 ... 고맙습니다 ... 지금이 모든 곳에서 ... 나는 생각 이상으로 – Doc

0

은 단일 쿼리를 만듭니다 수 있도록 도와드립니다 : (두 번 뭔가를 할 필요 :))

$results = $con->query("SELECT AVG(activity) as avgscore, AVG(timely) as avgtime FROM combinedna WHERE coachname = '$coachname'"); 이 그런 결과를 얻기를 (하나의 행) $row = $results ->fetch_assoc()

echo "<tr>"; 
echo "<td>Did you identify an effective integrated activity?</td>"; 
echo "<td><center>" .$row['avgscore'] *.05 . "</center></td>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>Did you spend the appropriate amount of time?</td>"; 
echo "<td><center> " .$row['avgtime'] *.10 . "</center></td>"; 
echo "</tr>"; 
$total = $row['avgscore'] *.05 + $row['avgtime'] *.10; 
+0

고맙습니다 ... 와우 ... 내가 만든 것보다 더 쉽게 – Doc

+0

여러 행을 반환하려는 경우 어떻게해야합니까? – Doc

+0

그런 다음 쿼리에 GROUP BY 필드를 추가해야합니다 (여기서 field는 그룹화하려는 필드 임). while ($ row = $ results -> fetch_assoc()) {/ * code here * /} ' –

관련 문제