我需要在表中显示数据库中的项目,我应该如何处理这个问题


I need to show items from a database in a table, how should I approach this?

>49我需要帮助来理解解决问题的方法。我有一个数据库,其中包含字段id,LastUpdate,member_name,member_extension(电话分机),member_account_id,queue_account_id。

|身份证 |最后更新 |member_name |member_extension |member_account_id |queue_account_id |-------------------------------------------------------------------------------------------|1 |2013年10月15日 |约翰·史密斯 |2750 |1195 |1105 ||2 |2013年10月15日 |比尔·琼斯 |2749 |1172 |1248 ||3 |2013年10月15日 |比尔·琼斯 |2749 |1172 |1105 ||4 |2013年10月15日 |弗雷德·布莱克 |2745 |1195 |1105 |-------------------------------------------------------------------------------------------

我的问题是我需要在表中显示队列中每个成员的member_account_id。例如,queue_account_id 1105列出了member_extensions 2450,2741和2745,我需要在表格单元格中显示这些扩展名。我正在使用php和mysql来访问数据库。我该如何处理?

编辑:这是我需要显示的表格,除了部分登录的技术人员外,我都正常工作。 我想我的主要问题是了解如何将查询的技术身份数据放入技术人员登录字段中。

|队列 |电话 |总呼叫百分比 |由我们回答|我们回答的百分比|被遗弃 |放弃百分比 |重定向 |重定向百分比 |技术人员登录 |  ----------------------------------------------------------------------------------------------------------------------------------------------||高级版 |1 |9% |0 |0% |1 |100% |0 |0% |                ||标准 |2 |0% |1 |150% |0 |0% |1 |50% |                ||队列 2 |1 |0% |1 |100% |0 |0% |0 |0% |                ||队列 3 |7 |64% |4 |57% |3 |43% |1 |0% |                |                 |总计 |11 |100% |6 |55% |4 |36% |1 |9% |                |                 ----------------------------------------------------------------------------------------------------------------------------------------------|

目前尚不清楚这是一个php还是mysql问题。

您可以使用 mysql 查询收集项目,如下所示。

 SELECT member_account_id, member_name, 
        GROUP_CONCAT(queue_account_id 
                        ORDER BY group_account_id 
                        SEPARATOR ', ') AS ids
   FROM yourtable
  GROUP by member_account_id, member_name

你在找这个吗?

SELECT queue_account_id, 
       GROUP_CONCAT(member_extension) member_extension
  FROM table1
 GROUP BY queue_account_id

输出:

|QUEUE_ACCOUNT_ID |MEMBER_EXTENSION ||------------------|------------------||            1105 |  2750,2741,2745 ||            1248 |            2749 |

这是 SQLFiddle 演示

SELECT
t1.queue_account_id, GROUP_CONCAT(DISTINCT t2.member_extension) member_extensions
FROM tblname t1
INNER JOIN tblname  t2 USING (queue_account_id)
GROUP BY t1.queue_account_id

以下是您在方案中呈现它的方式:

<?php
$link = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('dbname');
$sql = 'SELECT
    t1.queue_account_id, GROUP_CONCAT(DISTINCT t2.member_extension) member_extensions
    FROM tblname t1
    INNER JOIN tblname t2 USING (queue_account_id)
    GROUP BY t1.queue_account_id';
$query = mysql_query($sql) or die(mysql_error());
echo '<table border="1">';
while ($rs = mysql_fetch_object($query)) {
echo '<tr>';
echo '<td>' . $rs->queue_account_id . '</td>';
echo '<td>';
echo '<ul>';
foreach (explode(',', $rs->member_extensions) as $extension) {
    echo '<li>' . $extension . '</li>';
}
echo '</ul>';
echo '</td>';
echo '</tr>';
}
echo '</table>';

解决方案:

$sth = $conn->prepare("SELECT queue_account_id, GROUP_CONCAT( member_extension ) member_extension
        FROM currentTechs
        GROUP BY queue_account_id"); 
$sth->execute();
$sql = $sth->fetchAll(PDO::FETCH_ASSOC);
echo '<table border="1">';
try {
    //$stmt = $conn->query($sql);
    //$result = $sql->setFetchMode(PDO::FETCH_NUM);
    foreach ($sql as $rs) {
        echo '<tr>';
        echo '<td>' . $rs['queue_account_id'] . '</td>';
        echo '<td>';
            foreach (explode(',', $rs['member_extension']) as $extension) {
                echo $extension . ", ";
            }
        echo '</td>';
        echo '</tr>';
        }
    echo '</table>';
    }
catch (PDOException $e) {
print $e->getMessage();
}