Повторяющийся результат GROUP BY - PullRequest
0 голосов
/ 29 сентября 2018

Я не могу правильно использовать GROUP BY, почему GROUP BY не получает ожидаемый результат.

Я не могу обработать объединение между таблицами fee и fee_tm.При назначении GROUP BY одному будет все в порядке, но строка другого будет извлечена в соответствии с общим количеством строк в предыдущей таблице (идентификатор которого был сгруппирован).Я пытался присвоить group_by обоим, но выходные данные удвоились на две строки.

Ожидаемый результат

enter image description here

Реальный результат

Но здесь строка повторяется соответственно fee_tm.id общее количество строк, затем вывод извлекается как

enter image description here

Структура базы данных

fee_tm

id  |   ttl |   year
=====================
1   |   Jan |   1
2   |   Feb |   1
3   |   Mar |   1

плата

id  |   ttl     |   year
========================
1   |   Annual  |   1
2   |   Monthly |   1

cls_fee

id  |   cls_id  |   sec_id  |   fee_id |    fee
================================================
1   |   1       |   1       |   1      |    1000
2   |   1       |   1       |   2      |    560

студент

id  |   ttl |   cls |   sec |   year
====================================
1   |   John|   1   |   1   |   1
2   |   Riya|   1   |   1   |   1

MYSQL

$result=$con->prepare("
    SELECT
        fee_tm.ttl AS f_tm,
        cls_fee.fee AS f_mnt,
        fee.ttl AS f_ttl
    FROM
        student
    LEFT JOIN
        fee_tm ON fee_tm.year = student.year
    JOIN
        cls_fee ON cls_fee.sec_id = student.sec AND cls_fee.cls_id = student.cls
    LEFT JOIN
        fee ON fee.id = cls_fee.fee_id
    WHERE
        student.id =:stdt
    GROUP BY
        fee_tm.id";

    $results=array();
    while($row=$result->fetch(PDO::FETCH_ASSOC)){
        $results[]=$row;
        echo"
        <input type='checkbox' name='f_id' /'>".$row['f_tm'];
    } echo "<br/>
    <table>";

    foreach($results as $row1){
        echo"
        <tr>
            <td>".$row1['f_ttl']."</td>
            <td>".$row1['f_mnt']."</td>
        </tr>";
} echo "</table>";

Результат print_r($result->fetchAll(PDO::FETCH_ASSOC)):

Array (
[0] => Array ( [fee] => Feb [f_mnt] => 1000 [f_ttl] => Annual Fee ) 
[1] => Array ( [fee] => Mar [f_mnt] => 1000 [f_ttl] => Annual Fee ) 
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...