0

サンプルテーブル:

name           subject   grade    status    
-----------------------------------------  
john peter      engl     NULL       X  
john peter      math     85         A  
john peter      philo    NULL       X  
mark lewis      engl     90         A  
mark lewis      math     NULL       X

サンプルクエリ:

<?php  
$query="SELECT name, grade, status, group_concat(subject SEPARATOR '-') as subj   
FROM grades GROUP BY name ORDER BY name";  
$result = $mysqli->query($query);  
<?php } ?>
<table>
<tr>
    <td>name</td>
    <td>Math</td>
    <td>English</td>
    <td>Philosopy</td>  
</tr>  

<?php while($row = $result->fetch_array()){ ?>
<tr>
<td><?php echo $row['name'];?></td>
<td><?php if (strpos($row['subj'],'math')!== false) {echo 'I';}?></td>
<td><?php if (strpos($row['subj'],'engl')!== false) {echo 'I';}?></td>
<td><?php if (strpos($row['subj'],'philo')!== false) {echo 'I';}?></td>
</tr>
<?php } ?>
</table>  

サンプル出力:

name          Math  English  Philosopy
john peter     I      I         I
mark lewis     I      I         

今、私が達成したいことが来ます:
私はその値がXである場合、次のようにステータスを表示したいと思います:またはこれを行うためのはるかに良い方法がありますか?
みんなありがとう。

name          Math  English  Philosopy
john peter     I      X         I
mark lewis     X      I         
4

1 に答える 1

0

これを試して、

SELECT  name,
        MAX(CASE WHEN subject = 'Math' THEN IF(status = 'X', 'X', 'I') END) MATH,
        MAX(CASE WHEN subject = 'Engl' THEN IF(status = 'X', 'X', 'I') END) ENGLISH,
        MAX(CASE WHEN subject = 'Philo' THEN IF(status = 'X', 'X', 'I') END) Philiosophy
FROM    tableName
GROUP   BY name
于 2013-02-10T23:56:10.587 に答える