Почему отображается только одна строка из этого запроса? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь распечатать результаты этого запроса, но он выводит только первую строку. Почему это так?

if (isset($_GET['consumiperstanza'])) {
    $num_stanza=$_GET['num_stanza'];
    $data1=$_GET['data1'];
    $data2=$_GET['data2'];
    $query="SELECT stanze.num_stanza,consumi.cod_consumo, servizi.nome, 
                   consumi.quantita, servizi.prezzo, consumi.data_c
            FROM consumi, servizi, stanze
            WHERE stanze.num_stanza=consumi.num_stanza
                  AND servizi.cod_servizio=consumi.cod_servizio
                  AND stanze.num_stanza='$num_stanza'
                  AND consumi.data_c BETWEEN '$data1' AND '$data2'
            GROUP BY stanze.num_stanza";
    $risultato = $conn->query($query);
    if(mysqli_num_rows($risultato) > 0){
        echo "<table border=1 bgcolor= 'white' align='center'>";
            echo "<tr>";
                echo "<th>NUMERO STANZA</th>";
                echo "<th>CODICE CONSUMO</th>";
                echo "<th>NOME</th>";
                echo "<th>QUANTIT&Agrave;</th>";
                echo "<th>PREZZO</th>";
                echo "<th>DATA</th>";
            echo "</tr>";
        while($riga = mysqli_fetch_array($risultato)){
            echo "<tr>";
                echo "<td>" . $riga[0] . "</td>";
                echo "<td>" . $riga[1] . "</td>";
                echo "<td>" . $riga[2] . "</td>";
                echo "<td>" . $riga[3] . "</td>";
                echo "<td>" . $riga[4] . "</td>";
                echo "<td>" . $riga[5] . "</td>";
            echo "</tr>";
        }
        echo "</table><br>";
    }
}

1 Ответ

2 голосов
/ 10 июня 2019

Это часть ваших критериев

AND stanze.num_stanza='$num_stanza'

Но вы тоже делаете это.

GROUP BY stanze.num_stanza

Итак, вы получите только одну группу.


Кроме того, все остальные столбцы в вашем SELECT не имеют четкого определения, поскольку они не включены в GROUP BY и не являются агрегированными выражениями. Более новые версии MySQL фактически не позволяют вам делать это по умолчанию . Это возможно в старых версиях, но может не дать ожидаемых результатов.

Руководство по MySQL 5.6:

... это полезно, прежде всего, когда все значения в каждом неагрегированном столбце, не названном в GROUP BY, одинаковы для каждой группы. Сервер может свободно выбирать любое значение из каждой группы, поэтому, если они не совпадают, выбранные значения являются недетерминированными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...