【问题标题】:formatted output using php and mysql使用 php 和 mysql 格式化输出
【发布时间】:2015-02-13 04:54:56
【问题描述】:

我的问题详情:

日志表

userid offername 金额 uamount offertitle 日期

offername 是这样的

xxx
年年

zzzz

我的查询:

$sqloffers=mysql_query("SELECT user.username, logs.* FROM logs 
INNER JOIN user ON user.userid = logs.userid  ORDER BY logs.offername DESC ");

显示结果

<?php

      while($row = mysql_fetch_array($sqloffers))  
{

    echo "<tr> ";
    echo "<td>" .$row[username] . "</td>";
    echo "<td>" .$row[offername] . "</td>";
       echo "<td>" .$row[amount] . "</td>";
    echo "<td>" .$row[uamount] . "</td>";
       echo "<td>" .$row[offertitle] . "</td>";
        echo "<td>" .$row[date] . "</td>";

     }

     echo "</tr> " ;
?>

我希望输出由每个用户名,aginst offername 分隔。

现在我就是这样出去的
用户名 offername 金额 日期
用户 1 xxxx xxx xxxx
用户 1 xxxx xxx xxxx
用户 1 xxxx xxx xxxx
user1 yyyy yyyy yyyy
user1 yyyy yyyy yyyy
user1 yyyy yyyy yyyy

等等。

我想要这样的输出

用户名 offername 金额日期
用户 1 xxxx xxx xxxx
user1 yyyy yyyy yyyy
user1 zzz zzz zzzz
用户 2 xxxx xxx xxxx
user2 yyyy yyyy yyyy
user2 zzz zzz zzzz
用户 N xxxx xxx xxxx
用户N yyyy yyyy yyyy
userN zzz zzz zzzz

澄清:

此表包含用户完成的不同公司的报价。 我需要这样一种方式,如果用户 1 完成了来自 offername xxx 的 10 个报价,以及来自 offername yy 的 5 个报价,那么输出应该只针对公司 xx 显示 user1 1 次,并显示其对 xxx 公司的计数,依此类推。

我希望我已经澄清了这个问题。

接受答案后有效的解决方案:

$sqloffers=mysql_query("
SELECT user.username, logs.offername, logs.date, SUM(logs.uamount) as uamount, SUM(logs.amount) as amount ,count(*) as counter 
FROM logs
INNER JOIN user 
ON user.userid = logs.userid  
GROUP BY user.username
ORDER BY logs.offername DESC

【问题讨论】:

  • 欢迎来到 Stackoverflow。问题更清楚。

标签: php mysql sql


【解决方案1】:

试试这个,只是开始:

$sqloffers=mysql_query("
SELECT user.username, logs.offername, logs.date, SUM(logs.uamount) as uamount, SUM(logs.amount) as amount ,count(*) as counter 
FROM logs 
INNER JOIN user 
ON user.userid = logs.userid  
GROUP BY user.username, logs.offername, logs.date
ORDER BY logs.offername DESC 
");

【讨论】:

  • 不显示任何记录,出现空表。只显示标题。
  • 那么检查我的名字?我不知道你真正的表结构。 offername 是否属于 logs 表?因为我的更改没有做任何新的事情,没有过滤器没有 WHERE 条件,所以只能是破坏结果的字段名称
  • logs table ::::::: userid offername amount uamount offertitle date 我只需要从其他表中选择用户名其余相同。我已经用我正在使用的更多代码再次编辑了这个问题
  • 所以我可以看到您尝试输出的 6 个字段,但在您的数据样本中,您只使用了 4 个字段,这很奇怪。那么offername通常是空的吗?该列设置了什么类型?尝试将我的查询中的offername 更改为offertitle
  • 更改后仍然相同,在我的问题中,我显示了示例数据。offertitle 有时为空,标记为 N/A,但 offername 总是填满。
【解决方案2】:
使用 DISTINCT 修饰符。 不同的日志。*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2012-05-02
    • 1970-01-01
    • 2020-10-21
    • 2015-02-23
    相关资源
    最近更新 更多