php - 显示与同一行关联的多个字段

标签 php mysql group-concat

我有很多表 INNER JOIN(ing) 正在进行,我已经弄清楚了那部分。基本上,我会显示某些信息有限的紧急调用,以便公众可以了解他们所在地区正在发生的情况。我最近决定将单元与工单表进行内部联接,以便人们可以看到哪些单元分配给了某些调用以及它们在调用中的状态。

我将通话记录在表格中。每一行都是一个不同的调用。添加单元时遇到的问题是,如果一个调用有多个单元,即使两行中的两个单元分配给同一个调用,它也会为每个单元显示不同的行。示例:

救护车 1 - 呼吸困难 - 调用#1013 引擎 1 - 呼吸困难 - 调用#1013 救护车 2 - 升降辅助 - 调用# 1012 引擎 2 - 提升辅助 - 调用#1012

我想列出一行中涉及的所有单位,以便调用信息仅显示一次。示例:

救护车 1,1 号发动机 - 呼吸困难 - 调用#1013 救护车 2,2 号发动机 - 升降辅助 - 调用#1012

我尝试使用一些教程中的 GROUP_CONCAT 和 GROUP BY 方法。这样一来,每个调用仅显示一次,但它也只为每个调用显示一个单位,无论是否为该调用分配了超过 1 个单位。

我认为这里的一个大问题在于这样一个事实:我在 INNER JOIN(ing) 多个表之间的代码中有很多信息,但为了显示单元名称,所有这些都是完全必要的(救护车 1)而不仅仅是代表该单位的 ID 号 (41)。

我正在使用的基本表的编码如下,没有使用 GROUP_CONCAT 或任何 GROUP 方法。 非常感谢任何能够提供任何建议的人,因为这个建议真的让我迷失了!

<table cellspacing=10>
    <tr>
        <th align="left">
            <u>Assigned Units-Status</u>
        </th>
        <th align="left">
            <u>City/Area</u>
        </th>
        <th align="left">
            <u>Call Date/Time</u>
        </th>
        <th align="left">
            <u>Call Description</u>
        </th>
     </tr>

<?php
    // Connect to database server
    mysql_connect("host", "db", "pass") or die (mysql_error ());

    // Select database
    mysql_select_db("dbname") or die(mysql_error());

    // SQL query
    $query="SELECT 911dbticket.id, 911dbticket.city, 911dbticket.problemstart, 911dbticket.description, 911dbassigns.ticket_id, 911dbassigns.responder_id, 911dbassigns.status_id, 911dbassigns.dispatched, 911dbassigns.responding, 911dbassigns.on_scene, 911dbassigns.clear, 911dbresponder.name
    FROM 911dbticket
    INNER JOIN 911dbassigns ON 911dbticket.id=911dbassigns.ticket_id
    INNER JOIN 911dbresponder ON 911dbassigns.responder_id=911dbresponder.id
    INNER JOIN 911dbun_status ON 911dbassigns.status_id=911dbun_status.id
    WHERE `status` !='1' AND `in_types_id` NOT IN ('3', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14') 
    ORDER BY problemstart DESC";

    // Execute the query (the recordset $rs contains the result)
    $rs = mysql_query($query);

    // Loop the recordset $rs
    // Each row will be made into an array ($row) using mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
        echo "<tr><td><font color=orange>".$row['name']."</font></td><td><font color=green>".$row['city']." </font></td><td><font color=green> ".$row['problemstart']."</font></td><td width=500><font color=green><i>".$row['description']."</i></font></td></tr>";

    }

    // Close the database connection
    mysql_close();
?>

最佳答案

明白了。我不知道“GROUP_CONCAT”必须包含在行结果中,如下所示:

$row['GROUP_CONCAT(name)']

而不是简单地:

$row['name']

我做了更多的研究并查看了更多的示例和教程,我在 echo 中看到了这一点并尝试了它。我很高兴地惊讶地看到“救护车 1,引擎 1”在同一排的同一调用旁边!哈哈

非常感谢大家花时间查看并帮助我!对此,我真的非常感激!希望这篇文章能够帮助其他可能遇到此问题的人。

关于php - 显示与同一行关联的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25397904/

相关文章:

php - 在模型中使用查询的 Codeigniter 分页

php - 从两个表中选择数据,返回数据并从item id中获取产品名称

mysql - sql group_concat 和子查询

php - Codeigniter 显示错误 : mysql_real_escape_string() expects parameter 2 to be resource, bool 值给定

mysql - 对于一个引擎为InnoDB的表,最坏情况下会锁定多少行?

mysql - 应用于多个列时,Group Concat 返回重复条目

php - 如何让 mysql Group_Concat 使用额外的 CONCAT 信息?

php - 将 Solr 与 PHP 结合使用

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select * from `songs` where `id` = 5 limit 1)

php - 如何在 html 中显示图像,同时限制对这些图像的访问?