簡體   English   中英

按日期分組(php,mysql)

[英]Group by date (php, mysql)

我有一個mysql表

daten    name      sub   rate
*******************************
09.22  Jonh     some5      one
09.22  Jonh     some2      two
09.22  Jonh     some3      two

需要獲取HTML:

Jonh:
date some5 some2 some3
***********************
09.22 one  two   two

我做:

$str = "SELECT * FROM table WHERE name= '$name' group by daten";
$rts = mysql_query($str);

echo "<h1>".$name."</h1>";
echo "<table border=\"1\"><th>date</th> "; 

   while($row = mysql_fetch_array($rs)) {

echo  "<th>".$row['sub'] . "</th></tr>";
echo  "<tr><td>".$row['daten'] ."</td><td>".$row['rate']."</td></tr>";
     }
echo "</table>";

但是,這樣的代碼在按日期分組時僅顯示第一個值。 沒有小組,一切都是錯誤的。

請告訴我哪里出了問題以及在哪里進行挖掘。

謝謝

您需要在單行中獲取所有數據,因此必須在查詢下使用if條件。 Mysql if函數基於條件返回值。 IF的上界是

if (expr, if_true_expr, if_false_expr)

如果expr的計算結果為TRUE,即expr不為NULL並且expr不為0,則IF函數返回if_true_expr,否則返回if_false_expr。 IF函數根據其使用方式返回數字或字符串。

SELECT
    `name`
  , MAX(IF(`rate` = 'one', `rate`, NULL)) some5
  , MAX(IF(`rate` = 'two', `rate`, NULL)) some2
  , MAX(IF(`rate` = 'two', `rate`, NULL)) some3
FROM
  database1
GROUP BY
  name;

使用此查詢:SELECT daten,GROUP_CONCAT(sub)作為FROM FROM table WHERE name ='$ name'的子項,按daten分組。 您將獲得預期的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM