Mysql计数列问题

时间:2016-04-26 15:35:37

标签: php mysql count

我无法弄清楚如何计算所有这些舞者的名单并与所有舞者的总数相呼应

id | dancer1 | dancer2 | dancer3 | dancer4, and so on..
---------------------------------------
1     alex     michael    dalm      name
2     clare    rose       test        

我从一开始就有这个但是没有用:

$counter = mysql_query("SELECT COUNT(*) AS id FROM table");

$num = mysql_fetch_array($counter); 
$dancers = $num["id"];

echo "Total dancers: $dancers";

感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

我实际上会以不同的(更容易的)方式保存你的舞者......例如:

ID NAME SURNAME PHONE ....

1 Anna Brickstone 0975 ......

2 Jef Damen 0754 ......

这样您可以使用以下代码来计算表格:

$dancersCount="0";

$sql = "SELECT * FROM dancers";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
    $dancersCount++;
}
} else {
   echo "No dancers..";
}

echo"$dancersCount";

每次找到一行(舞者)时,计数器将计数+1

如果你真的想这样做......

然后我真的不认为有一个简单的方法可以解决这个问题......您可能需要检查数据库中有多少列,但这不是我可以帮助您的...

答案 1 :(得分:0)

您需要更改表格结构:

id | dancerNumber  | name
1      1             alex
2      1             clare
3      2             michael
4      2             rose
5      3             dalm
6      3             test
7      4             name
8      4             dana

SELECT COUNT(*) AS id FROM table将返回8位舞者。如果这是你想要的?

如果你想保留你的结构,那么你需要做以下的sql查询

SELECT   dancer1,
         dancer2,
         dancer3,
         (CASE WHEN (dancer1 <> "" AND dancer1 IS NOT NULL) THEN 1 ELSE 0 END + 
         CASE WHEN (dancer2 <> "" AND dancer2 IS NOT NULL) THEN 1 ELSE 0 END + 
         CASE WHEN (dancer3 <> "" AND dancer3 IS NOT NULL) THEN 1 ELSE 0 END) AS COUNTER
FROM     table

这将计算所有非空和非空列,并在表的末尾添加一个计数器。这个计数器将包含你的结构的舞者数量。

使用您的PHP代码完整答案

$query = 'SELECT (CASE WHEN (dancer1 <> "" AND dancer1 IS NOT NULL) THEN 1 ELSE 0 END + 
                 CASE WHEN (dancer2 <> "" AND dancer2 IS NOT NULL) THEN 1 ELSE 0 END + 
                 CASE WHEN (dancer3 <> "" AND dancer3 IS NOT NULL) THEN 1 ELSE 0 END) AS COUNTER 
FROM table'

$counter = mysql_query($query);

$num = mysql_fetch_array($counter); 
$dancers = $num["COUNTER"];

echo "Total dancers: $dancers";

答案 2 :(得分:0)

试试这个:

$counter = mysql_query("SELECT * FROM table");
$dancers = 0;
while($rows = mysql_fetch_array($counter)){
    for($i = 1; $i <= 24; $i++){
        $dan_id = 'dancer'.$i;
        if($rows[$dan_id] != "" || $rows[$dan_id] != null )
            $dancers++;
    }   
}
echo "Total dancers:". $dancers;
  

注意:切勿像这样设计数据库表。