php - 显示与数据库字段不同的值

标签 php mysql sql if-statement

我的 MySQL 数据库专栏内容如下:

+-------+
|Status |
+-------+
|       | // empty
|       | // empty
|Reject |
|reject |
+-------+

我对这个Status有一些条件,所以用户可以看到这种情况的判断:

  1. 如果结果拒绝(如果选择项目则自动)或拒绝(某些用户在编辑数据后输入此内容)echo Reject
  2. 如果结果为空或“接受”或“接受”回显接受

我已经尝试过这个:

if($row['Status'] == "Reject"){
                echo "Reject";
                }
        elseif($row['Status'] == "reject"){
                echo "Reject";
                }
        else{
                echo "Accept";
                }

但是,它总是回显接受。因为下面的查询结果是:

SELECT COUNT(Serial_number) AS n, SUM(S) AS S,SUM(A) AS A, SUM(B) AS B, SUM(C) AS C,
        ROUND((((SUM(S)*1)+(SUM(A)*1)+(SUM(B)*0.4)+(SUM(C)*0.1))/COUNT(Serial_number)*1000000),0) AS PPM,
        Status
        FROM inspection_report WHERE Model LIKE 'MDV-Z700D' AND Lot_no LIKE '010A' 
        AND Line LIKE 'FA 21' AND Range_sampling ='177X0001-177X0100' GROUP BY Range_sampling

结果:

n   S   A   B   C   PPM    Status
20  0   1   0   0   50000             //this empty status make echo = Accept

如果使用GROUP_CONCAT(Status)结果是,,Reject,reject。那么,如何回显每个条件引用上面的2种情况?

<小时/>

注意:我希望如果该列中有拒绝值,即使我有很多接受值,结果也会回显拒绝。

最佳答案

<罢工>

<罢工>

如果StatusNULL ,您可以使用COALESCE

GROUP_CONCAT(COALESCE(Status,'Accept'))

<罢工>

但如果是空字符串 '' ,利用inline IF statement

GROUP_CONCAT(if(Status = '' or Status = 'accept', 'Accept', Status))

更新

IF(LOCATE('Reject',GROUP_CONCAT(DISTINCT if(Status = '' or Status = 'accept', 'Accept', Status))) > 0, 'REJECT', 'ACCEPT')

关于php - 显示与数据库字段不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027223/

相关文章:

mysql - 每个属性值的 SQL 最大值

php - 使用 HTTP 身份验证以编程方式下载文件

php - PHP 中的 Telegram Bot 自定义键盘

php - 无效使用群组功能

mysql - 合并并用名称替换表 ID

mysql - Azure 数据库 MySQL DB 5.7 .net core 中的 transient 处理

java - 解析日期以在 JPQL 查询中进行比较

php://输入用于文件上传?

php - 从外部 javascript 文件访问 PHP 变量

php - 如何在表中添加一条记录