PHP MYSQL需要对某些列中具有相同值的行进行分组

PHP MYSQL需要对某些列中具有相同值的行进行分组,php,mysql,wordpress,Php,Mysql,Wordpress,我有一个名为“条目”的表格,其中包含以下列:发起人、合作者、合作伙伴、利基和潜在费用。表中的某些行具有相同的原始发件人。我有一张表格,有人填好后提交给数据库。我尝试过使用GROUP BY,但在这方面需要一些帮助 我的WordPress SQL语句:这将在WordPress函数文件中使用 global $wpdb; $rows = $wpdb->get_results( "SELECT * FROM entries group by originator"); 我需要以下面的表格格式显示数

我有一个名为“条目”的表格,其中包含以下列:发起人、合作者、合作伙伴、利基和潜在费用。表中的某些行具有相同的原始发件人。我有一张表格,有人填好后提交给数据库。我尝试过使用GROUP BY,但在这方面需要一些帮助

我的WordPress SQL语句:这将在WordPress函数文件中使用

global $wpdb;
$rows = $wpdb->get_results( "SELECT * FROM entries group by originator");
我需要以下面的表格格式显示数据。基本上,我需要根据相同的发起人对每个条目进行分组


发起人
合作者
订婚合伙人
市场定位
潜在费用
第一发起人
公司名称
业务伙伴
网状物
$40000
第一发起人
公司名称
业务伙伴
网状物
$40000
第一发起人
公司名称
业务伙伴
网状物
$40000


发起人 合作者 订婚合伙人 市场定位 潜在费用 第二发起人 公司名称 业务伙伴 网状物 $40000 第二发起人 公司名称 业务伙伴 网状物 $40000
您需要的不是GROUP BY语句

查看示例HTML结构,您需要的是一个有序的行列表。然后可以使用php对结果进行排序,然后使用它们

global $wpdb;
$rows = $wpdb->get_results( "SELECT * FROM `entries`");
$sortedRows = [];

foreach($rows as $row) {
    if (!isset($sortedRows[$row->originator])) {
        $sortedRows[$row->originator] = [];
    }
    $sortedRows[$row->originator][] = $row;
}
另一种方法是在查询中使用ORDER BY,由于我不知道您创建HTML结构的方法是什么,因此我无法完全解决这一问题:

global $wpdb;
$rows = $wpdb->get_results( "SELECT * FROM `entries` ORDER BY `originator` ASC");
$currentOriginator = NULL;

foreach ($rows as $row) {
   if ($row->originator !== $currentOriginator) {
       //create table
       $currentOriginator = $row->originator;
   }
   //add the row to the table
}

我建议您获取所有条目并使用php将它们分组,就像这样

global $wpdb;
$rows = $wpdb->get_results( "SELECT * FROM entries");
$originators = [];
foreach($rows as $row)
{ 
    $originators[$row->originator][] = $row;
}
然后通过发起人循环填写表格,如下所示:

<?php
foreach($originators as $originator => $entries){
?>

   <table class="table">
    <thead>
      <tr>
        <th>Originator</th>
        <th>Collaborator</th>
        <th>engagement_partner</th>
        <th>Niche</th>
        <th>Fee Potential</th>
    </tr>
    </thead>

    <tbody>
    <?php foreach($entries as $entry){ ?>
        <tr>
            <td><b> <?php echo $entry->originator; ?></b></td>
            <td><?php echo $entry->collaborator; ?></td>
            <td><?php echo $entry->engagement_partner; ?></td>
            <td><?php echo $entry->niche; ?></td>
            <td><?php echo $entry->fee_potential;?></td>
        </tr>
    <?php } ?>
    </tbody>
</table>
<?php}?>


发起人
合作者
订婚合伙人
市场定位
潜在费用

使用php生成格式<代码>分组依据似乎与您需要的内容不匹配。这意味着聚合一个结果(如每个小生境的总和),而不是全部列出。这是否正确
$originators[$row['originator']][]=$row这似乎失败了。你能试试这个$originators[$row->originator][]=$row;它显示列名和第一个发起人名称,但没有更多行,甚至没有第一个发起人的其他列的数据。是。在这里,它至少显示了列名称和一个发起人,但行的其余部分没有数据,并且没有显示指向下一个发起人的循环。检查此部分
您没有使用编辑版本