2017-02-12 2 views
-1

私は学校でSQLクラスを取っています。 。SQLの 'more'、 'less'の使用

「あまりその第十最もクレジットと統計学科の学生の合計クレジットリストを持っている統計部門でこれらの学生のIDと名前を探す:

は疑問がありましたあなたの結果はID順であり、重複を印刷しません。

スキーマ:

はそれに答えるために、私は次のようでした

  • 教室(建物、部屋番号、容量)
  • 部門(DEPT名、建物、予算を)
  • コース(コースID、タイトル、部門名、クレジット)
  • インストラクター(ID、名前、部署名、給与)
  • セクション(コースID、秒のID、学期、毎年、建物、部屋番号、タイムスロットID)
  • が教える(ID、コースID、秒のID、学期、年)
  • 学生(ID、名前、DEPT
  • タイムスロット(タイムスロットIDは、日、開始時刻、名前、TOTクレド)
  • がかかる(ID、コースID、秒のID、学期、毎年、学年)
  • 顧問(SのID、I ID)、終了時刻)
  • prereq(コースid、prereq id)

私の答え:私の答えで

select DISTINCT ID, name 
    from student 
    where DEPT_NAME = 'Statistics' and TOT_CRED < .1* 128; 

は、私が正しい解決策を提供しますが、確かに優秀な学生のすべてtime.Oneを動作しないことになる、最大のクレジット時間128をハードコード、それを次のようでした:

select distinct tochar(less.id,'00009') as ID, less.name 
from student more, student less 
where less.totcred<more.totcred/10 and more.deptname = 'Statistics' and less.deptname = 'Statistics' 
order by id; 

私は恥ずかしがる気がしていたので、私は彼に何も聞いていませんでした。しかし、誰かがここで「less」と「more」の使用を説明できますか?

+0

これらは 'student'テーブルのエイリアスです。このクエリは、テーブルのすべての行に対してペアごとの比較を実行するために使用されます。 – CollinD

+3

それが一番上の学生の作品なら、教授はかなり悪いはずです。それは正しくない。 –

+0

これらは同じテーブルが2回結合されているため必要なテーブルの別名です。 –

答えて

3

moreおよびlessはテーブルエイリアスです。このソリューションは、STUDENTSテーブルから自己結合を2回選択し、2つのインスタンスを区別するためにエイリアスが必要です。エイリアスはmoreless以外は何でも構いませんがt1t2よりも表現力があります。

+0

私は今それを見る。エイリアスを比較する必要があった。しかし、なぜ彼らは高価だと言っているのですか? –

+0

もう一度お読みください。彼は高価ではなかった。 –

関連する問題