如何选择Distinct值然后按使用mysql和PHP返回的数量排序?

时间:2012-04-26 16:33:08

标签: php mysql

好的,所以我尝试使用这个thread上列出的解决方案,我得到了一些有效但不完全全部的解决方案。我试图显示不同的结果,然后按返回结果的数量排序。如果一个ID有4个调查的结果,它会显示4.显然我可以这样做myql_num_rows但是,我不知道如何订购这个数量,所以它会显示为......     4     3     2     1 代替..     2     4     1     3

这是我到目前为止所做的,我认为我的Select语句是正确的,我只需要正确地回应它。

<?php
$query_db = ("SELECT DISTINCT SGSID FROM SGresult WHERE SGFACemail = '$email'");
$result = mysql_query($query_db, $surveys) or die(mysql_error());


$i = 0;
while ($row = mysql_fetch_assoc($result)) {

$SGSID = $row['SGSID'];
//INSERTED MODIFIED SELECT STATEMENT HERE
$query_check = ("SELECT SGpID, count(*) AS numCount FROM SGresult WHERE SGFACemail = '$email' AND  SGSID = '$SGSID' GROUP BY SGpID");

$result_c = mysql_query($query_check, $surveys) or die(mysql_error());
$row2 = mysql_fetch_array($result_c);
$SGpID = $row2[3];
echo $row2['numCount'];

//tried num_rows statement to return value of numCount
//$num_rows2 = mysql_num_rows($result_c, $row2['numCount']);
$num_rows = mysql_num_rows($result_c);

$query_name = ("SELECT * FROM SGsurveyID WHERE SGSID = '$SGSID'");


$result_F = mysql_query($query_name, $surveys) or die(mysql_error($surveys));
$name_row = mysql_fetch_row($result_F);

<?php echo $row2['numCount'];  //this returns results, but not the amount of rows 
  $i++;?>

  <tr>
        <td><?php echo $i;?></td>
        <td><?php echo $name_row[1];?></td>
        <td><?php echo $num_rows;  ?></td>
        <td> <?php echo $row2['numCount']; ?></td>
      </tr>
      <?php


}

所以回顾一下我基本上尝试GROUP BY AND ORDER BY在该DISTINCT结果中返回的行数。

再次感谢您的帮助和指示。请原谅凌乱的代码。

2 个答案:

答案 0 :(得分:0)

使用SELECT DISTINCT SGSID FROM SGresult WHERE SGFACemail = '$email' ORDER BY SGSID desc

答案 1 :(得分:0)

你想要一起使用分组和排序是正确的。

我认为mysql不会严格按语法对组/顺序进行操作,但如果这不起作用,请告诉我,我有点生疏。

SELECT SGpID
  , count(*) AS numCount
FROM SGresult
WHERE SGFACemail = '$email' 
  AND  SGSID = '$SGSID' 
GROUP BY SGpID
ORDER BY numCount desc

这适用于标有“//INSERTED MODIFIED SELECT STATEMENT HERE”的查询。我很确定你可以从一个查询中获得所有你想要的东西但是我不太清楚你正在尝试做什么,也不能弄清楚你的模式是什么样的。