php – 检查group by的任何行是否为空

我用$b检查组的所有行,如果是$b中的空行,我想禁用组列$a的按钮,如下面的脚本所示.我正在使用group这就是为什么它只在$b的第一行工作.
如果任何一行为空,如何禁用组列的按钮?
我应该使用循环来检查$b的所有行.

PHP

$id = $_POST['id'];
        $sql = $db->prepare("SELECT a, b from table  WHERE id = :id group by a");
        $sql ->bindparam(':id',$id);
        $sql ->execute();   
        while($row = $sql ->fetch(PDO:: FETCH_ASSOC) ) {
                $a = $row['a'];
                $b = $row['b'];
                if(!empty ($b))
                    {
                        echo '<tr>
                        <td><input type="button" name="a[]" value="'.$a.'"></td>
                        </tr>';
                    }else{
                        echo '<tr>
                        <td><input type="button" name="a[]" value="'.$a.'" disabled></td>
                        </tr>';
                    }

        } // while

解决方法:

如果至少有一个结果为null,您正在尝试检查每个团队,
试试这个sql行:

SELECT `team_id`, `team`, MIN(IFNULL(`result`, -1)) `result`
FROM `teams` 
WHERE `group_id` = :id
GROUP BY `team_id`

如果结果不为null,则IFNULL(result,-1)将返回结果,如果为null,则返回-1

因此MIN(IFNULL(result,-1))将返回团队所有结果的最小值,如果有null结果,则返回-1

因此,其余的很简单:

foreach($stmt->fetchAll() as $row) {
    $a = $row['team'];
    $b = $row['result'];
    if ($b < 0) {
        // disable case
    } else {
        // enable case
    }
}

NB1:我认为结果不能为负,如果不是这种情况,请使用ABS功能.

NB2:使用索引而不是跨国数据库中的名称总是更好.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...