0

我在 mySQL 中有一个表,其结构如下所示,带有一行数据

info     R1    R2    R3      R4      R5         ( Columns)
------------------------------------------   
Percent  80    90    70      85      69         (Data)

我的应用程序是参加一个讲座,该讲座以上述格式存储出勤数据和总体百分比。

如果百分比低于 75%,我需要检索列名吗?如何使用 PHP 脚本执行此操作?我应该使用哪个 mySQL 查询?

4

4 回答 4

3

如果你想使用简单的 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
于 2013-04-10T10:22:30.420 回答
2

如果我了解您的需求,请尝试以下操作:

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;

是 sqlfiddle 的链接。

于 2013-04-10T10:26:54.917 回答
0

您可以先选择所有字段,然后仅显示值小于 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 />";
于 2013-04-10T10:44:48.707 回答
-1

传递查询以从数据库中检索百分比低于 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;

它将获取具有列名的所有列(信息除外),但列的值将是null如果百分比高于或等于 75。从结果中,根据条件,您可以获得列名然后使用ResultSetMetaData您可以获得列名字。

于 2013-04-10T10:18:58.213 回答