我在mySQL中有一个表,其结构如下所示,其中包含一行数据
info R1 R2 R3 R4 R5 ( Columns)
------------------------------------------
Percent 80 90 70 85 69 (Data)
我的应用程序是在一个讲座中出席,该讲座以上述格式存储出席数据和总体百分比。
如果百分比低于75%,我需要检索列名?我如何使用Php脚本做到这一点?我应该使用哪个mySQL查询?
如果您想使用简单的PHP脚本,可以检查此SQL FIDDLE。
查询如下:
SELECT r1,'R1' FROM info WHERE R1<75
UNION ALL
SELECT r2,'R2' FROM info WHERE R2<75
UNION ALL
SELECT r3,'R3' FROM info WHERE R3<75
UNION ALL
SELECT r4,'R4' FROM info WHERE R4<75
UNION ALL
SELECT r5,'R5' FROM info WHERE R5<75
如果我明白你需要什么,试试这个:
SELECT info,
if(R1 > 75, 'R1','-') AS 'R1>75',
if(R2 > 75, 'R2','-') AS 'R2>75',
if(R3 > 75, 'R3','-') AS 'R3>75',
if(R4 > 75, 'R4','-') AS 'R4>75',
if(R5 > 75, 'R5','-') AS 'R5>75'
FROM Table1
WHERE R1 > 75
OR R2 > 75
OR R3 > 75
OR R4 > 75
OR R5 > 75;
可以先选择所有字段,然后只显示值小于75的数据。一种方法是:
$sql = "SELECT * FROM table_name";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row[R1]<75)
echo "R1: " . $row[R1] . "<br />";
if($row[R2]<75)
echo "R2: " . $row[R2] . "<br />";
if($row[R3]<75)
echo "R3: " . $row[R3] . "<br />";
if($row[R4]<75)
echo "R4: " . $row[R4] . "<br />";
if($row[R5]<75)
echo "R5: " . $row[R5] . "<br />";
传递查询从数据库中检索百分比低于75%的数据。因此,它将只检索值小于75的列。
select
case
when R1<75 then R1
end
as 'R1',
case
when R2<75 then R2
end
as 'R2',
case
when R3<75 then R3
end
as 'R3',
case
when R4<75 then R4
end
as 'R4',
case
when R5<75 then R5
end
as 'R5'
from Table;
它将获取具有列名的所有列(info除外),但如果percent大于或等于75,列的值将为null
。根据条件,可以从结果中获得列名然后使用ResultSetMetaData
,您可以获得列名。