簡體   English   中英

來自數據庫和顯示的PHP和MYSQL組結果

[英]PHP and MYSQL group results from database and display

當我想對數據庫中的結果進行分組時出現此問題。 我必須表1) 設備和2) device_groups 我使用了INNER JOIN來獲取相關數據。

$mysqli = new mysqli('localhost', 'name', 'pass', 'tbl');


$qry = "
        SELECT g.id as groupId, g.name as groupName, d.device_id
        FROM librenms.devices as d
        INNER JOIN librenms.device_groups as g
                ON d.hostname LIKE  CONCAT('%', mysql.SPLIT_STR(g.pattern, '\"', 2), '%')
        WHERE g.pattern LIKE '_devices.hostname%'
        ORDER BY g.id
";


$qid = $mysqli->query($qry); 

以下代碼如下所示:

<table>
<tr>
    <th>Group Name</th>
    <th>Device ID</th>
</tr>
<?php while($row = $qid->fetch_assoc()){
    $deviceId = split(",",$row["device_id"]);
?>
    <tr>
        <td><?php echo $row["groupName"] ?> </td>
        <td><?php echo $deviceId[0]; array_shift($deviceId) ?></td>
    </tr>
    <?php foreach( $deviceId as $device){ ?>
        <tr>
            <td></td>
            <td><?php echo $device ?></td>
        </tr>
    <?php } ?>
<?php } ?>
</table>

我得到這樣的結果:

Group Name  | Device ID
group1      | 154
group1      | 155
group1      | 156
group2      | 157
group2      | 158
group2      | 159
group3      | 160
group3      | 161

因此,我的問題是按groupName或groupId分組日期並將其顯示在下表中的好方法是什么? 如您所見,我只希望一次打印組名,並且將以與組名的關系來打印屬於該組的所有設備。

 Group Name     | Device ID
...........................
    group1      | 154
                | 155
                | 156
...........................
    group2      | 157
                | 158
                | 159
...........................
    group3      | 160
                | 161

通過將先前的組名稱記錄在user variable可以實現預期的結果。

如下更改$qry

SELECT 
    g.id as groupId, 
    IF(g.name = @last_name, '', g.name) as groupName, 
    d.device_id, 
    @last_name := g.name
FROM librenms.devices as d
INNER JOIN librenms.device_groups as g
        ON d.hostname LIKE  CONCAT('%', mysql.SPLIT_STR(g.pattern, '\"', 2), '%')
CROSS JOIN (SELECT @last_name := '') param
WHERE g.pattern LIKE '_devices.hostname%'
ORDER BY g.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM