MySQLデータベース行使-4

すべての学生の合計学生のクエリ数、学生の名前、選択科目の合計数は、すべてのコースのグレード


 

分析:この質問は明らかにのみ使用し、SCと学生二つのテーブル、これらの共同調査の二つのテーブル、および結果を操作する選択科目の合計数の合計は、対象SCテーブルですされているので、我々は、フィールドでのテーブルrを、構築することができます選択科目と実績の総数の合計だけでなく、SID、学生のテーブルと、その後の共同問い合わせ


 

Rのビルドテーブル

選択sc.sid、合計(sc.score)として scoresum、カウント数(sc.cid)としてcoursenumber から皮下
sc.sidによるグループ。

クエリ結果:

+ ------ + ---------- + -------------- +
| SID | scoresum | coursenumber |
+ ------ + ---------- + -------------- +
| 01    |    269.0 |            3 |
| 02    |    210.0 |            3 |
| 03    |    240.0 |            3 |
| 04    |    100.0 |            3 |
| 05    |    163.0 |            2 |
| 06    |     65.0 |            2 |
| 07    |    187.0 |            2 |
+ ------ + ---------- + -------------- +

学生との共同問い合わせ:

選択student.sid、student.sname、r.coursenumber、r.scoresum
 からの学生を、選択 sc.sid、和(sc.score)として scoresum、カウント(sc.cid)として coursenumber からSC
sc.sidによるグループ)R
ここ student.sid = r.sid。

クエリ結果:

+ ------ + -------- + -------------- + ---------- +
| SID | SNAME | coursenumber | scoresum |
+ ------ + -------- + -------------- + ---------- +
| 01    |チャオ・レイ|             3 |     269.0 |
| 02    |マネーパワー|             3 |     210.0 |
| 03    |日風|             3 |     240.0 |
| 04    |李ユン|             3 |     100.0 |
| 05    |周メイ|             2 |     163.0 |
| 06    |ウーラン|             2 |      65.0 |
| 07    |鄭竹|             2 |     187.0 |
+ ------ + -------- + -------------- + ---------- +

 

この事実に、結果が出てきた、いくつかの学生が選択科目ではないことを示す、しかし、私たちの学生を考えるために少し必要がある場所は、実際に13を持っていますが、ここでの唯一の7に登場し、ここでのクエリは明らかに無視されますこれは、厳格なのいくつかは、我々は他の科目の学生が考慮され、それを必要としなかったそうだとすれば、我々は何の科目与えない学生にはnull値に参加できます。

すべての学生のテーブルの学生のSIDとSNAMEをまずチェックしてください

選択 student.sid、student.sname からの学生を。

クエリの結果。

+ ------ + -------- +
| SID | SNAME |
+ ------ + -------- +
| 01    |チャオ・レイ|
| 02    |マネーパワー|
| 03    |日の風|
| 04    |李ユン|
| 05    |周メイ|
| 06    |ウーラン|
| 07    |鄭竹|
| 09    |ジョー・スミス|
| 10    |ジョン・ドウ|
| 11    |ジョン・ドウ|
| 12    |趙6 |
| 13    | SUN 7 |
+ ------ + -------- +

次いで、第一の方法、同じ合計スコアを取り出し、被験者の数をチェックしてください

選択sc.sid、合計(sc.score)として scoresum、カウント数(sc.cid)としてcoursenumber から皮下
       sc.sidによるグループ。

クエリ結果:

+ ------ + ---------- + -------------- +
| SID | scoresum | coursenumber |
+ ------ + ---------- + -------------- +
| 01    |    269.0 |            3 |
| 02    |    210.0 |            3 |
| 03    |    240.0 |            3 |
| 04    |    100.0 |            3 |
| 05    |    163.0 |            2 |
| 06    |     65.0 |            2 |
| 07    |    187.0 |            2 |
+ ------ + ---------- + -------------- +

二人はその後、左のクエリ結果、クエリに参加します:

選択s.sid、s.sname、r.coursenumber、r.scoresumを
 から選択student.sid、student.sname 
     から学生
    )■ 
    左結合します 選択 
        sc.sid、和(sc.score)として scoresum、カウント(sc.cid)としてcoursenumber
         からSC
        sc.sidによってグループ
    )R 
   s.sid上 = r.sid
);

最終結果:

+ ------ + -------- + -------------- + ---------- +
| SID | SNAME | coursenumber | scoresum |
+ ------ + -------- + -------------- + ---------- +
| 01    |チャオ・レイ|             3 |     269.0 |
| 02    |マネーパワー|             3 |     210.0 |
| 03    |日風|             3 |     240.0 |
| 04    |李ユン|             3 |     100.0 |
| 05    |周メイ|             2 |     163.0 |
| 06    |ウーラン|             2 |      65.0 |
| 07    |鄭竹|             2 |     187.0 |
| 09    |ジョー・スミス| NULL | NULL |
| 10    |ジョン・ドウ| NULL | NULL |
| 11    |ジョン・ドウ| NULL | NULL |
| 12    |趙6 | NULL | NULL |
| 13    | SUN 7 | NULL | NULL |
+ ------ + -------- + -------------- + ---------- +

上記

おすすめ

転載: www.cnblogs.com/lattesea/p/12163857.html