0

皆さん: PHP と MYSQL を使用している現在のプロジェクトで助けが必要です。多くのユーザー情報を含むデータベースがあります。

例えば:

報告年=2012

名前:チャン・タイマン

年齢:20

学校: サイエンススクール

在学期間:2011年~2015年

中国語:1

英語:2

総合評価:B

私がやりたいことは、次のいくつかの優先順位でソートすることです。

  1. 現在の年 (2012 年) のレポートのみを使用するため、最初にそれが現在の年かどうかを確認します。

  2. 期間が 3 を超えているかどうかを確認し、そうであれば続行します。

  3. 次に、全体的なグレーディングのために ASC を並べ替えます。--->全体的な評価が同じ場合は、英語で並べ替えます。--->英語も同じ場合は、中国語で並べ替えます。

  4. 上記の優先順位で並べ替えた後、すべての情報を含むテーブルを表示します。

これで、現在の年の情報のテーブルを表示して、期間が 3 を超えているかどうかを確認できますが、テーブルからではなく、前の並べ替えのデータを比較するにはどうすればよいでしょうか?

例えば。

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

(上記の条件に合致するデータをソートし続けたい....)

ありがとう~~


以上の条件を満たしたデータをソートすることができます。

しかし、上記の条件を満たさなかった残りのデータも表に表示したいのですが、これらのデータをすべて表の最後に配置し、学校ごとにグループ化します。それらを選択して最後になるように並べ替えるにはどうすればよいですか?

例: (最後にすべてのデータがテーブルに表示されます)

1.John period>3 BAA 2011 //秒 A が B より高いため

2.Betty period>3 BBA 2011 // period>3 and 2011

3.Louis (期間<3) AAA 2011 //期間<3だが2011年

4.メアリー期>3 AAA (2010) //2010=[ 期間>3

4

3 に答える 3

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)
");
于 2012-08-01T07:07:34.207 に答える
1
SELECT * FROM $tbl_name 
where year = $current_year
and period > 3
order by `overall grading` asc, english asc, chinese asc
于 2012-08-01T07:07:59.870 に答える
0

SQL を使用して 1、3、および 4 を実行し、php を使用してレコードをループし、条件 2 をサポートしていないレコードを除外することができます。

これは SQL ステートメントです。

SELECT * FROM table_name where report_year = $current_year order by overall_grading asc, English desc, Chinese desc
于 2012-08-01T07:25:33.500 に答える