发布
社区首页 >问答首页 >PHP选择重复记录

PHP选择重复记录
EN

Stack Overflow用户
提问于 2013-12-11 18:01:23
回答 2查看 1.8K关注 0票数 1

我有以下mysql表:

代码语言:javascript
代码运行次数:0
复制
id   store_t  item  qty
1      M5      xx    2
2      M5      xy    4
3      M8      ze    10
4      M5      zz    1

我希望表输出如下所示:

代码语言:javascript
代码运行次数:0
复制
M5
xx   2
xy   4
zz   1

M8
ze   10

我要寻找的是找到一种方法,对重复的store_t进行分组和选择,并输出其itemqty,而不重复store_t

我尝试在mysql语句中使用GROUP BY store_t,它可以对store_t的副本进行分组,但只显示一条条目和数量的记录。

这是我的代码:

代码语言:javascript
代码运行次数:0
复制
$query = "SELECT * from transfer_check GROUP BY store_t";
$result = mysql_query($query);
if(mysql_num_rows($result)>0){

$num = mysql_num_rows($result);
for($i=0;$i<$num;$i++){
$row = mysql_fetch_assoc($result);

//Table Created for each Store

echo "<table width=80% align=center border=2 cellpadding=3 cellspacing=0>";
echo "<tr><td align=center colspan=2>".$row['store_t']."</td></tr>";
echo "<tr><td align=center bgcolor=white><b>Item No.</b></td><td align=center 
bgcolor=lightgreen><b>QTY Transferred</b></td></tr>";

echo "<tr><td align=center><b>".strtoupper($row['item_no'])."</b></td><td align=center>  <b>".$row['qty']."</b></td></tr>";
echo "</table>";


//End of i loop
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-11 18:12:13

您是否尝试过通过store_t命令结果,然后循环遍历它们?

类似于:

代码语言:javascript
代码运行次数:0
复制
    <?php
    $query = "SELECT * from transfer_check ORDER BY store_t";
    $result = mysql_query($query);
    ?><table><?php
    while ( $row = mysql_fetch_assoc($query) ) {
    ?><tr><?php
       if ( !isset($curStore) || $curStore != $row['store_t'] ) {              
           $curStore = $row['store_t'];
           echo "<td colspan='2'>$curStore</td></tr><tr>";
       }
       echo "<td>{$row['item']}</td><td>{$row['qty']}</td>";
       ?></tr>
   }?>
</table>
票数 2
EN

Stack Overflow用户

发布于 2013-12-11 18:40:58

您可以使用CONCAT对来自sql的值进行分组,然后在PHP循环中解析结果。

首先,这里是具有所需结果的sql fiddle

代码语言:javascript
代码运行次数:0
复制
SELECT DISTINCT
  store_t, GROUP_CONCAT(DISTINCT item ORDER BY item) as items_list,
  GROUP_CONCAT(DISTINCT qty ORDER BY qty) as qty
FROM myTable 
  GROUP BY store_t

其结果将是:

代码语言:javascript
代码运行次数:0
复制
STORE_T ITEMS_LIST  QTY
M5      xx,xy,zz    1,2,4
M8      ze          10

现在我们需要循环这个结果来创建您想要的结构,对于每一行(store_t),我们将得到qtyitem的值。我们将它分成数组(仅用于显示目的)。

代码语言:javascript
代码运行次数:0
复制
$result = mysql_query($sql) or die('A error occured: ' . mysql_error());

while ($record = mssql_fetch_array($result)) {
      $items_array = explode(",",$record['items_list']);
      $qty_array = explode(",",$record['qty']);
      echo $record['store_t'] . ": <br/>";
      for ($i=0; $i<sizeof($items_array); $i++) {
          echo "Item:" . $items_array[$i] . " QTY: " . $qty_array[$i]; 
      }
}

产出如下:

代码语言:javascript
代码运行次数:0
复制
M5
Item: xx QTY: 1
Item: xy QTY: 2

等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20526613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档