3
我知道这是非常容易做的事情,但我还没有得到正确的方法来做到这一点。我发现了一些东西Here但不同于我所需要的并且没有积极贡献。有人友好协助。如何获得GROUP CONCAT的每个不同值的出现次数(php,mysql)
我有这样
name |status
-------------
mike |yes
mike |yes
mike |no
mike |ney
john |no
john |ney
john |yes
表我要输出这样的事情
name |status |total
------------------------------
mike |yes-2,no-1,ney-1 | 4
john |yes-1,no-1,ney-1 | 3
我尝试使用GROUP_CONCAT这样
result = mysql_query("SELECT name, GROUP_CONCAT(DISTINCT status) AS status
FROM table GROUP BY name ");
while($row = mysql_fetch_array($result)){
$st[] = $row['status'];
$status=explode(",",$row['status']);
$total = count($status);
echo $row['name']."|".$row['status']."|".$total."<br><br>"; }
我想获得的每个截然不同的号码$row['status']
,如果可能的话,更好的方式到达$total
。
EDIT1
name | yes | no | ney | total
------------------------------
mike |2 |1 |1 | 4
john |1 |1 |1 | 3
这第二输出达到Here
我相信你的答案应该工作,但请您检查,我想我有一个语法错误。 (*)表达式中的数据类型为'SELECT',CONCAT('status',' - ',COUNT(*)) )AS totalPerStatus FROM表GROUP BY名称,状态)t GROUP BY name;“); while $($ row = mysql_fetch_array($ result)){\t \t echo $ row ['name']。“ - ”。$ row ['status']。“ - ”。$ row ['totalPerStatus']。“ - ” $行[ '总']; }' – scylla
@scylla'AS状态'后缺少一个逗号 –
SQL很好,但我的echo命令返回致命错误,因为我试图验证每个$行中的数据输出。即$ row ['name'],$ row ['status'],$ row ['totalPerStatus']'。我如何去做这件事?致命错误:无法使用类型为stdClass的对象作为 – scylla