2013-01-18 104 views
0

好吧我真的努力了3天瞭解如何從查詢中獲取值以基於查詢中的值顯示在不同的列中。以下是我希望它看起來像...如何根據值顯示mysql結果到不同的列

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 query here ... the 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>"; 

我知道上面是錯誤的,但我不知道要放什麼東西上面,以顯示我的我想要什麼例子?

+1

數據庫結構及其中的一些數據將會有幫助。 – Peon

+0

發佈您當前的PHP代碼和表架構。這將有所幫助。 –

+0

希望我的編輯幫助 – user1710960

回答

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>"; 
} 

?> 
1

只是嘗試在列中的回顯之前添加條件。 應該看起來像:

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

如果($ RES [ '名稱']> = 60和$ RES [ '名稱'] < 90)回聲$ RES [ '數據'];`

....

// $ res ['name'] - > john/june ... // $ res ['data'] - > $ 50/$ 500 ...

我認爲這是最簡單的方法..

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的人的合計值,並將它們分類到基於其總價值的合適列中。