PHP MYSQL需要对某些列中具有相同值的行进行分组
我有一个名为“条目”的表格,其中包含以下列:发起人、合作者、合作伙伴、利基和潜在费用。表中的某些行具有相同的原始发件人。我有一张表格,有人填好后提交给数据库。我尝试过使用GROUP BY,但在这方面需要一些帮助 我的WordPress SQL语句:这将在WordPress函数文件中使用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"); 我需要以下面的表格格式显示数
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;它显示列名和第一个发起人名称,但没有更多行,甚至没有第一个发起人的其他列的数据。是。在这里,它至少显示了列名称和一个发起人,但行的其余部分没有数据,并且没有显示指向下一个发起人的循环。检查此部分
您没有使用编辑版本