PHP:计算GROUP BY结果

时间:2014-03-08 20:28:47

标签: php sql count group-by

我有一个尝试对相同值进行分组的查询。我遇到的问题是计算每个组的行数。我的代码在下面,但它似乎不起作用COUNT(*)只输出(1)

非常感谢任何想法。

<?
$sql_inv = mysql_query("SELECT * ,COUNT(*) FROM I WHERE id = '$I_1_id' OR id = '$I_2_id' OR id = '$I_3_id' OR id = '$I_4_id' OR id = '$I_5_id' OR id = '$I_6_id' OR id = '$I_7_id' OR id = '$I_8_id' OR id = '$I_9_id' OR id = '$I_10_id' OR id = '$I_11_id' OR id = '$I_12_id' OR id = '$I_13_id' OR id = '$I_14_id' OR id = '$I_15_id' OR id = '$I_16_id' OR id = '$I_17_id' OR id = '$I_18_id' OR id = '$I_19_id' OR id = '$I_20' GROUP BY id");

$inv_num_rows = mysql_num_rows($sql_inv);
    while ($row_inv = mysql_fetch_array($sql_inv)){
        echo $row_inv['I_Type'];
        echo ' : ';
        echo $row_inv['I_Model'];
        echo ' (';
        echo $row_inv['COUNT(*)'];
        echo ')';
            if ($inv_num_rows >= 2) {
            echo '<br />';
        }
    }
?>

1 个答案:

答案 0 :(得分:0)

假设id是购物清单的ID,并且您想要计算每个ID的每个I_Type和I_Model组合的次数,oyu想要做的是GROUP BY all 3。

SELECT *, count(*) AS duplicates FROM I GROUP BY I_Model, I_Type, id;

如果根据GROUP BY中指定的字段实际数据相同,它确实有用。构建更多schem的示例如下所示:http://sqlfiddle.com/#!2/a4c47/1

而不是像WHERE id = 1 or id = 2 or id = 3 or id =4 or id = 5那样使用INWHERE id IN(1,2,3,4,5)这样的结构。它的读写更容易。