![](/img/trans.png)
[英]Group rows of data, maintain a subarray of ids within the group, and only present the lowest id in each group as the first level key
[英]Group rows by level and put name for each
我有這張桌子
id ins sec div subject subjectHour level
1 1 1 7 subName 5 level 1
2 1 2 7 subName2 4 level 1
3 1 2 7 subName3 4 level 2
4 1 1 7 subName4 6 level 2
我想把像
1級科目
SUBNAME
subName2
2級科目
subName3
subName4
mysql加入4張表
$displayMat = $db->prepare('SELECT
a.id, a.ins_id, a.sub_name, a.subHour, a.level,
b.id, b.ins_name,
c.id, sec_name,
d.id, div_name
FROM ins_subjects AS a
INNER JOIN institutes AS b
INNER JOIN ins_sections AS c
INNER JOIN ins_division AS d
WHERE a.ins_id=?
GROUP BY a.id;
');
這是循環
$displayMat->bind_param('i', $inId);
if ($displayMat->execute()) {
$results = $displayMat->get_result();
while ($m = mysqli_fetch_array($results)) {
<li>
<div class="col-xs-3"><?php print $m['sub_name']; ?></div>
<div class="col-xs-3"><?php print $m['ins_name']; ?></div>
<div class="col-xs-3"><?php print $m['sec_name']; ?></div>
<div class="col-xs-3"><?php print $m['div_name']; ?></div>
</li>
}
您的SQL需要一些連接條件,而GROUP BY似乎是多余的。
從這樣的東西開始:
SELECT a.id, a.ins_id, a.sub_name, a.subHour, a.level,
b.id, b.ins_name,
c.id, sec_name,
d.id, div_name
FROM ins_subjects AS a
INNER JOIN institutes AS b ON a.ins_id = b.id
INNER JOIN ins_sections AS c ON a.sec_id = c.id
INNER JOIN ins_division AS d ON a.div_id = d.id
ORDER BY a.level, a.sub_name
您可以依次讀取每一行。 存儲級別,並在級別從上一行更改時輸出級別。
編輯
用php粗心完成,類似這樣(此處未使用列表)
<?php
$displayMat->bind_param('i', $inId);
if ($displayMat->execute())
{
$results = $displayMat->get_result();
$prev_level = '';
while ($m = mysqli_fetch_array($results))
{
if ($prev_level != $m['level'])
{
echo $m['level'];
}
$prev_level = $m['level'];
?>
<div class="col-xs-3"><?php print $m['sub_name']; ?></div>
<div class="col-xs-3"><?php print $m['ins_name']; ?></div>
<div class="col-xs-3"><?php print $m['sec_name']; ?></div>
<div class="col-xs-3"><?php print $m['div_name']; ?></div>
<?php
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.