簡體   English   中英

在包含來自SQL查詢的數據的表中對NON-SQL表列進行排序

[英]Sorting a NON-SQL table column in a table containing data from SQL query

下面,我將代碼簡化為簡化版本。 我存儲的SQL SELECT結果用於:

  • 姓氏(dlname)
  • 類別(類別)
  • 此數據添加到數據庫的日期(date_added)
  • 客戶名稱(客戶)

我在SQL SELECT之外附加了一個名為“ days_on_list”的附加字段。 此字段顯示自將數據添加到數據庫以來的天數,使表輸出5列用戶數據。 所有5列都將是可排序的。

我正在使用服務器端JSON,並且已成功將其顯示到表中並在5列中的4列上進行了排序。 問題是我無法對“ days_on_list”字段進行排序,因為包含SQL代碼的PHP文件僅允許我對select查詢中的4個字段進行排序 有沒有一種方法可以使“ days_on_list”列在表中可排序? 我知道我可以將此字段添加到sql表中,但是我將不得不在服務器上運行一個計划的事件來每天對此進行更新(我不滿意)。

還有另一種方法可以進行這種靈活的表排序嗎?

很抱歉問題標題(可能會引起混淆),我在將此問題中遇到麻煩。

 /*SQL CODE ABOVE HERE STORES SELECT RETURNS IN $result*/ $cart = array(); $i = 0; //index the entries // get variables from sql result. if ($num_rows > 0) { //if table is populated... while ($row = mysqli_fetch_assoc($result)) { //calculate days on list by getting the number of days from //the 'date_added' to today $date1 = date_create($row['date_added']); $today = date_create(date("dmY")); $interval = date_diff($date1, $today); $doty = $interval - > format("%a"); $cart[$i] = array( "dlname" => htmlspecialchars($row['dlname']), "category" => htmlspecialchars($row['category']), "date_added" => htmlspecialchars($row['date_added']), "client" => htmlspecialchars($row['client']), "days_on_list" => $doty, //date_added to now ); $i = $i + 1; //add next row } //encoding the PHP array $json_server_pagination_data = array( "total" => intval($num_rows), "rows" => $cart, //array data ); } echo json_encode($json_server_pagination_data); 

因為days_on_list是通過簡單地將date_added與當前日期進行比較來計算的,所以按days_on_list排序應該與按date_added排序完全相反。

換句話說,您實際上不需要按days_on_list排序。 如果用戶選擇days_on_list作為排序列,則只需使用ORDER BY date_added (與ASC / DESC相反)。

暫無
暫無

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

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