gpt4 book ai didi

mysql - 自动生成表并按名称分组值并获取多个值

转载 作者:行者123 更新时间:2023-11-29 23:08:30 25 4
gpt4 key购买 nike

大家好,我有个问题要问你们

我正在开发商店管理系统,我想从商店表中选择所有数据并以 html 表格格式显示它,到目前为止我已尝试使用下面的代码显示它

名称............商店......数量............单位

门............商店1............970............ pcs……决定

table ............商店2............10000............pcs...... ..决定

门............商店1............50............ ..pcs......决定

					 <table class="table table-striped table-bordered bootstrap-datatable datatable responsive">
<thead>
<tr>

<th>Item</th>

<th>name</th>

<th>location</th>

<th>Quantity</th>

<th>Unit</th>

</tr>
</thead>
<tbody>

<?php
if (isset($_POST['search'])){

foreach ($_POST['name'] as $attrib) {

$query = mysql_query("select * from store where name= '".$attrib."'") or die(mysql_error());

$num_row = mysql_num_rows($query);

while ($row = mysql_fetch_array($query)) {
$id = $row['id'];

?>

<tr class="del<?php echo $id ?>">

<td><?php echo $row['id']; ?></td>

<td><?php echo $row['name']; ?></td>

<td><?php echo $row['location']; ?></td>

<td><?php echo $row['quantity']; ?></td>

<td><?php echo $row['unit']; ?></td>

<td>
<a href="inventorysearch.php<?php echo '?id='.$id; ?>"><i class="glyphicon glyphicon-ok"></i> Decide</a></li>
</td>

但我需要显示的是仅从数据库中选择那些重复名称的分组名称,并将其显示如下。

名称............商店1............商店2............商店3

门............ 970 ............50............ ......0......决定

table ............ 10............10000...... ......0......决定

最佳答案

您可以使用 GROUP BY 聚合结果,并可选择对组中的所有项目执行算术运算(例如 SUM)

文档: http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html

但是,这不允许您轻松地将行转换为列,您可以使用 GROUP_CONCAT 将所有值合并到单个列中,但它很丑陋,并且容易出现解析特殊字符等问题。

最好的情况是在 PHP 中执行这项工作。我的建议是:

(1) 首先生成一个商店列表,例如

从商店中选择不同位置,其中 name=x

(2) 使用此信息创建位置数组,并打印表头

(3) 当您运行实际查询时,首先按位置对结果排序,然后再按任何其他参数排序。这意味着您将按顺序获取每个给定项目的所有位置。

SELECT * FROM store WHERE name=x ORDER BY location

(4) 迭代每一行,直到位置发生变化,现在同一位置有多个行,然后您可以通过迭代它们并确保每个位置在正确的列中输出来创建组合行输出

为了确保两个查询之间的位置列表不会更改,我建议确保 tx_isolation 是可重复读取的,然后在两个选择周围使用 BEGIN TRANSACTION 和 COMMIT 以确保它们读取相同的数据。

关于mysql - 自动生成表并按名称分组值并获取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com