0

わかりましたクエリから値を取得して、クエリの値に基づいて別の列に表示する方法を学ぶのに3日間本当に苦労しています。これが私が望むものです...

Name    0-30    30-60    60-90    90+
john            $50
june    $0.00
joe                               $100
fred                     $500

今のところ、上記の名前と金額のリストを取得できますが、次のように表示する方法しか知りません...

Name    0-30    30-60    60-90    90+
john    $50     $50      $50      $50
june    $0.00   $0.00    $0.00    $0.00
joe     $100    $100     $100     $100
fred    $500    $500     $500     $500

各列に変数を単純に出力しています。どんな助けでも大歓迎です。

echo "<TABLE WIDTH='100%' BORDER='0' CELLSPACING='0' CELLPADDING='5'>
<TR>
<TD WIDTH='5%'><B>Job</B><BR></TD>
<TD WIDTH='30%'><B>Name</B><BR></TD>
<TD WIDTH='12%'><B>0-30 Days</B><BR></TD>
<TD WIDTH='12%'><B>30-60 Days</B><BR></TD>
<TD WIDTH='12%'><B>60-90 Days</B><BR></TD>
<TD WIDTH='12%'><B>90+ Days</B><BR></TD>
<TD WIDTH='15%'><B>Total Amount</B><BR></TD>
</TR><TR>";

ここに SQL クエリ...sqlfiddle があります。http://sqlfiddle.com/#!2/e5d9c/1/0

echo "<TD WIDTH='5%'>$primary_key</TD>
<TD WIDTH='30%'>$a_name</TD>
<TD WIDTH='12%'>$total / $timeperiod</TD>
<TD WIDTH='12%'>$total / $timeperiod</TD>
<TD WIDTH='12%'>$total / $timeperiod</TD>
<TD WIDTH='12%'>$total / $timeperiod</TD>
<TD WIDTH='15%'>$total / $timeperiod</TD>
</TR>";

上記が間違っていることは知っていますが、私が欲しいものの例を表示するために上に何を入れればよいかわかりませんか?

4

3 に答える 3

1

列のエコーの前に条件を追加してみてください。それは次のようになります:

`if ($res['name']>=0 and $res['name']<30) echo $res['data'];

if ($res['name']>=30 and $res['name']<60) echo $res['data'];

if ($res['name']>=60 and $res['name']<90) echo $res['data'];`

....

//$res['name'] --> ジョン / ジューン ... //$res['data'] --> $50 / $500 ...

私はこれがそれを行う最も簡単な方法だと思います..

于 2013-01-18T09:27:29.463 に答える
0

以下のコードスニペットは必要なことを行います。

<?php

$query = "SELECT amount FROM mytable";

$res  = mysql_query($query);

while($data = mysql_fetch_row($res))
{
    echo "<tr>";
    if($data[0] < 30)
    {
        echo "<td colspan='4' align='left'>".$data[0]."</td>";
    }
    else
    {
        echo "<td>&nbsp;</td>";
        if($data[0] > 30 && $data[0] < 60)
            echo "<td colspan='3' align='left'>".$data[0]."</td>";
        else
        {
            echo "<td>&nbsp;</td>";
            if($data[0] > 60 && $data[0] < 90)
                echo "<td colspan='2' align='left'>".$data[0]."</td>";
            else
            {
                echo "<td>&nbsp;</td>";
                if($data[0] >  90)
                    echo "<td align='left'>".$data[0]."</td>";

            }
        }
    }
    echo "</tr>";
}

?>
于 2013-01-18T09:31:23.627 に答える
0
SELECT 
  Name,
  c0_30, c30_60, c60_90, c90
  FROM (                                   
    SELECT                                 
      Name,
      SUM(IF(val BETWEEN 0 AND 30, val, NULL)) As 'c0_30',
      SUM(IF(val BETWEEN 31 AND 60, val, NULL)) As 'c30_60',
      SUM(IF(val BETWEEN 61 AND 90, val, NULL)) As 'c60_90',
      SUM(IF(val > 90, val, NULL)) As 'c90'
    FROM talName
    GROUP BY Name WITH ROLLUP
  ) AS sums;

このクエリはval、人物の col の合計値を出力し、その合計値に基づいて適切な列に分類します。

于 2013-01-18T09:36:29.497 に答える