我有一个名为“ entries”的表,其列为:发起者,协作者,engagement_partner,利基市场和Fee_potential。表中的某些行具有相同的发起者。我有一个表格,有人填写,然后将其提交到数据库。我尝试使用GROUP BY,但在此方面需要一些帮助。
我的WordPress SQL语句:这将在WordPress函数文件中使用。
global $wpdb;
$rows = $wpdb->get_results( "SELECT * FROM entries group by originator");
我需要在下面以表格格式显示数据。基本上,我需要基于相同的发起者对每个条目进行分组。
<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>
<tr>
<td><b>First Originator</b></td>
<td>Company Name</td>
<td>Engagement Partner</td>
<td>Web</td>
<td>$40000</td>
</tr>
<tr>
<td><b>First Originator</b></td>
<td>Company Name</td>
<td>Engagement Partner</td>
<td>Web</td>
<td>$40000</td>
</tr>
<tr>
<td><b>First Originator</b></td>
<td>Company Name</td>
<td>Engagement Partner</td>
<td>Web</td>
<td>$40000</td>
</tr>
</tbody>
</table>
<br>
<br>
<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>
<tr>
<td><b>Second Originator</b></td>
<td>Company Name</td>
<td>Engagement Partner</td>
<td>Web</td>
<td>$40000</td>
</tr>
<tr>
<td><b>Second Originator</b></td>
<td>Company Name</td>
<td>Engagement Partner</td>
<td>Web</td>
<td>$40000</td>
</tr>
</tbody>
</table>
答案 0 :(得分:1)
我建议您获取所有条目并像这样用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}?>
答案 1 :(得分:0)
您所寻找的似乎不是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
}