2013-06-20 3 views
1

다음 스크립트를 사용하여 레코드를 계산합니다. 작동해야한다고 생각합니다.MySQL 데이터베이스가 예상대로 계산되지 않습니다.

'일부 호' X4

대신이 '어떤 호'여기서 1X 1X 1X 1X

include("connectmysqli.php"); 
    if (isset($_GET['questionnaireID'])) {$questionnaireID = $_GET['questionnaireID'];}else {$questionnaireID = '';} 
    echo '<p><strong>View Questionnaire Results</strong></p>'; 

    $sql1 = <<<SQL 
     SELECT answer1, COUNT(answer1) 
     FROM `QuestionnaireAnswers` 
     WHERE questionnaireID='$questionnaireID' 
     GROUP BY answer1 
    SQL; 
    if(!$result1 = $db->query($sql1)){ die('There was an error running the query [' . $db->error . ']');} 

    while($row1 = $result1->fetch_assoc()){ 

    echo $row1['COUNT(answer1)'] . ' X <strong>' . $answer1 . '</strong><br />'; 
    } 

을 출력되는 테이블의 일 예이다 enter image description here

위의 스크린 샷을 사용하면 answer1 열 N 배이어야한다 계산,하지만 난에 phpMyAdmin에 대한 답변에서 쿼리를 실행하면 무엇을 실제로 표시되는 것은 알겠 1 배 1 배

입니다 :

enter image description here

+0

'QuestionnaireAnswers'뿐만 아니라 일부 샘플 데이터에 대한 테이블 정의는 무엇인가로 사용? –

+0

Ok Iv가 테이블 –

+1

의 스크린 샷을 추가했습니다. 동일한 쿼리를 phpmyadmin에 직접 실행하고 어떤 결과를 얻었는지 확인하십시오. – Rikesh

답변

2

PHP에서 MySQL 함수 (COUNT)를 사용하려고합니다. 나는 그런 사용법을 본 적이 없다. ANSWER1의 개수에 대한 사용 별칭 :

$sql1 = <<<SQL 
    SELECT answer1, COUNT(*) as cnt 
    FROM `QuestionnaireAnswers` 
    WHERE questionnaireID='$questionnaireID' 
    GROUP BY questionnaireID 
SQL; 

그런 방법 fetch_assoc()

echo $row1['cnt']; 
+0

고마워, 나는 이것을 시도했다. 그러나 그것은 여전히 ​​1x 1x –

+0

으로 나타나고, Ollie Jones는 말한다. 코드를 변경했습니다. – zkanoca

+0

나는 여전히 1x 1x를 얻는다. phpmyadmin에서 실행하면Answer2가 한 행에 2 개, 다른 행에 6 개가있다. 그런 다음 cnt1이 하나의 행에 1 개 있고 다른 행이 다른 행에있다. . –

2

사용 COUNT(*) 대신 COUNT(answer1) 및 확인을해야한다 .

이것은 두 가지 이유로 스마트합니다. 첫째, 훨씬 빠르며 둘째, answer1으로 그룹화하므로 계산하지 않아야합니다.

편집 이것은 요약 쿼리입니다.

SELECT answer1, COUNT(*) AS cnt1 
     FROM `QuestionnaireAnswers` 
    WHERE questionnaireID='$questionnaireID' 
    GROUP BY answer1 

그것은 그 행의 여러 사건이 원래의 테이블에 나타내는 방법, answer1 각 고유 값에 대해 하나 개의 행을 생성한다. 표시 한 샘플 데이터에는 두 행만 포함되어 있습니다. 그 중 하나는 2의 답을 갖고 다른 하나는 8의 답을가집니다.

+0

나는 여전히 1x 1x를 얻습니다. phpmyadmin에서 실행하면Answer1이 1 행 2, 다른 행 6이 다음 1 행이 1 인 cnt1이됩니다. 그 다음 다른 행에있는 또 다른 행. –

+0

위의 스크린 샷을 추가했습니다. –

+0

당신은'6'을 얻었습니까? 정말? 죄송합니다.이 설명을 전혀 이해할 수 없습니다. –

관련 문제