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

时间:2014-08-20 06:17:22

标签: php mysql group-concat

我有很多表INNER JOIN(ing)继续这个,我有那个部分想通了。基本上,我正在显示某些信息有限的紧急呼叫,以便公众可以看到他们所在地区的情况。我最近决定INNER JOIN单位与票证表,以便人们可以看到分配给某些电话的单位以及他们的电话状态。

我在桌子上接听电话。每一行都是不同的电话。我添加单位时遇到的问题是,如果一个呼叫有多个单元,即使两个行中的两个单元被分配给同一个呼叫,它也会为每个单元显示不同的行。例如:

救护车1 - 呼吸困难 - 致电#1013 引擎1 - 呼吸困难 - 致电#1013 救护车2 - 升降机辅助 - 呼叫#1012 发动机2 - 提升辅助 - 呼叫#1012

我想列出一行中涉及的所有单位,因此呼叫信息仅显示一次。例如:

救护车1,发动机1 - 呼吸困难 - 致电#1013 救护车2,发动机2 - 升降辅助 - 呼叫#1012

我尝试过使用某些教程中的GROUP_CONCAT和GROUP BY方法。这只能显示每个呼叫一次,但它也只为每个呼叫显示一个单位,无论是否为该呼叫分配了多个。

我认为这里的一个大问题在于,我在INNER JOIN(ing)多个表之间的代码中有很多信息,但是为了显示单位名称(救护车1)而不仅仅是代表该单位的身份证号码(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();
?>

1 个答案:

答案 0 :(得分:0)

知道了。我不知道“GROUP_CONCAT”必须像这样包含在行结果中:

$row['GROUP_CONCAT(name)']

而不仅仅是:

$row['name']

我正在做更多的研究,并查看更多的示例和教程,我在回声中看到了这一点并尝试了它。我惊喜地看到同一个电话旁边的“救护车1,引擎1”!哈哈

非常感谢你花时间看看这个并帮助我!对此,我真的非常感激!希望这篇文章能够帮助那些可能遇到这个问题的人。