使用php和mysql格式化输出

时间:2015-02-13 04:54:56

标签: php mysql sql

我的问题详情:

记录表

用户名提供商名额金额日期

offername就是这样的

xxx
yyyy
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金额日期
user1 xxxx xxx xxxx
user1 xxxx xxx xxxx
user1 xxxx xxx xxxx
user1 yyyy yyyy yyyy
user1 yyyy yyyy yyyy
user1 yyyy yyyy yyyy

等等。

我想要像这样的输出

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

澄清:

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

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

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

$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

2 个答案:

答案 0 :(得分: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 
");

答案 1 :(得分:0)

use DISTINCT Modifiers.
DISTINCT  logs.*