Я не могу правильно использовать GROUP BY
, почему GROUP BY
не получает ожидаемый результат.
Я не могу обработать объединение между таблицами fee
и fee_tm
.При назначении GROUP BY
одному будет все в порядке, но строка другого будет извлечена в соответствии с общим количеством строк в предыдущей таблице (идентификатор которого был сгруппирован).Я пытался присвоить group_by
обоим, но выходные данные удвоились на две строки.
Ожидаемый результат
![enter image description here](https://i.stack.imgur.com/33vVa.jpg)
Реальный результат
Но здесь строка повторяется соответственно fee_tm.id
общее количество строк, затем вывод извлекается как
![enter image description here](https://i.stack.imgur.com/8ukoH.jpg)
Структура базы данных
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 )
)