-1

我怎样才能获得决赛桌?我想合并,以便如果它比较并且记录中有一个空列,它会用后一个值填充它。规则是 storetype 应该为每个用户只出现一次

在此处输入图像描述

4

3 回答 3

0

这可能是我做过的最脏的代码:)...如果您要处理的记录超过数百条,我什至不会推荐它。让我知道,因为我无法在 IDE 上检查它。

<?php

  $query = 'SELECT * FROM TABLE 1';
  $result = mysql_query($query);
  if ($result){
      while ($result=mysql_fetch_array($result)){
         $data[] = $row;
     }
  }

  // 

  if (isset($data)){
     $x=0;
     $y=0;
     $missingColumn = array();

     while ($x < count($data)){
        foreach ($data[$x] as $key=>$value){
            if (empty($value)){
               $missingColumn[$y][] = $key;
            } else {
               $output[$y][] = $value;
            }  
        }
        if ($missingColumn[$y]){
           $rowComplete = FALSE;
           $yetToBeCompleted = count($missingColumn[$y]);
           while (!$rowComplete && $x<count($data)){
              $x++;
              foreach ($missingColumn as $value){
                 if ($data[$x][$value] <> ''){
                    $output[$y][$value] = $data[$x][$value];
                    $yetToBeCompleted--;
                 }  
              }
              if (0 == $yetToBeCompleted){
                 $y++;
                 break;
                 //$rowComplete = TRUE;
              }
           }
           $y++;          

        } else {
          $y++;
          $x++;
        }
     }
  }


?>
于 2012-05-28T17:54:35.183 回答
0

也许我在 mysql 方面不是那么多才多艺,但没有任何困难的数据更改技术,我认为这是不可能的。

  • 编辑特别是因为在某些列中,您采用最常遇到的值并用该值替换“合并”单元格
于 2012-05-28T17:54:53.560 回答
0

看起来您正在按usernameand分组storetype。尝试运行这个:

select min(id), username, min(filename), min(date), min(desc), storetype,
    min(password), min(email), min(ftp)
from table1
group by username, storetype

请注意,当然,如果您确实拥有屏幕截图中显示的数据,即每列只有 1 个非空值,username并且除列storetype之外,每列中只有 1 个非空值id。在这种情况下,该id列看起来像是您选择了最小值,因此查询也会导致该值。

于 2012-05-28T18:29:25.910 回答