2012-08-01 58 views
0

大家好:我需要一些幫助,在我使用PHP和MYSQL的當前項目中。 我有一個包含大量用戶信息的數據庫。排序在PHP和MySQL中

例如:

報告期內= 2012

名稱:陳大文

年齡:20

學院:科學學校

校期間:2011- 2015

中國:1

英語:2

整體分級:乙

我想要做的事情是由幾個優先級排序:

  1. 由於我只使用報告是當年(2012年), 首先檢查是否是當年;

  2. 檢查是否超過3的期限,如果是,則繼續;

  3. 然後對整體分級的ASC進行排序; --->如果整體評分相同,則用英文排序; --->如果英文也一樣,那就用中文排序;

  4. 按上述優先級排序後顯示所有信息表;現在

,我可以顯示的信息表與當年和檢查時間是否超過3,但我搞不清我怎麼可以從以前的排序從表中比較數據,但不能?

例如。

$sorting_year=mysql_query("SELECT * FROM $tbl_name where year = $current_year"); 

(要排序繼續其符合上述條件的數據....)

謝謝~~


謝謝大家,它可以排序的數據,符合上述條件。

但是,其餘的數據不符合上述條件,我也想在表格中顯示它們,但將所有這些數據放在表格和組的最後一列由學校。我可以如何選擇它們並進行排序成爲最後一個?例如:(最後所有數據將顯示在表格上)

1。約翰的時間> 3 BAA 2011 //自第二A比B更高

2.Betty期間> 3 BBA 2011 //期間> 3和2011

3.Louis(週期< 3)AAA 2011 //期間< 3但是2011

4.Mary期間> 3 AAA(2010)// 2010 = [儘管期間> 3

+0

'檢查是否超過3':'學校期限'是一個包含必須評估的字符串的字段?因此,從Foo'查詢'SELECT \'School period \'將返回「2011-2015」作爲您的示例記錄? – VolkerK 2012-08-01 08:12:04

+0

謝謝大家,它可以對符合上述條件的數據進行排序。 然而,其餘的數據不符合上述條件,我也想在表格中顯示它們,但將所有這些數據放在表格的最後一組,並由學校組成。我如何選擇它們並將其排序爲持續? – newComer 2012-08-01 09:15:30

+0

將此添加到問題中。 – 2012-08-01 13:15:05

回答

1
$sorting_year=mysql_query("SELECT * FROM $tbl_name where year = $current_year ORDER BY `overall grading`,`English`,`Chinese`"); 

對於加上問題:

$sorting_year=mysql_query(" 
     (SELECT * FROM $tbl_name where year = $current_year 
     ORDER BY `overall grading`,`English`,`Chinese`) 
     UNION 
     (SELECT * FROM $tbl_name where year <> $current_year 
     GROUP BY school) 
"); 
+0

我可以知道如何選擇剩餘的數據,然後在學校的最後一張桌子和一組中排列它們? – newComer 2012-08-02 03:04:02

+0

你選擇剩下的數據是什麼意思? – sel 2012-08-02 03:07:10

+0

如果您指的其餘數據是那些不等於current_year的數據。我已經修改了答案。 – sel 2012-08-02 03:14:57

1
SELECT * FROM $tbl_name 
where year = $current_year 
and period > 3 
order by `overall grading` asc, english asc, chinese asc 
+0

我可以知道如何選擇剩餘的數據,然後在最後的表和小組由學校? – newComer 2012-08-02 03:04:13

0

可以1,3和4使用PHP使用SQL和遍歷記錄做並過濾掉那些不支持條件2

這是SQL語句:

SELECT * FROM table_name where report_year = $current_year order by overall_grading asc, English desc, Chinese desc 
+0

這與其他兩個答案有什麼不同?而且2可以在MySQL中完成。 – 2012-08-01 07:43:19

+0

我認爲他上面提到的這段時間是一個文本字符串「2011-2015」,所以不能在mysql中完成。我錯了嗎? – 2012-08-01 09:38:49

+0

查看@juergen'd的答案,儘管現在你提到它可能是對的。此外,我建議你把查詢放在一個代碼框(查詢前四個空格)。 – 2012-08-01 13:15:45