特定の日付以降に異なるものを選択

特定の日付以降に異なるものを選択

3 つのテーブルを持つ DB があります: classesteacherおよびtaught:

クラス

  • ID (クラス番号)
  • タイトル (クラスタイプ)
  • コスト (クラスコスト)

教師

  • ユニークな整数 (教師番号)

教えた

  • classNum (外部キー)
  • teacherNum (外部キー)
  • 日付フィールド (classdate)

2015年8月6日以降に開講された一意のクラスのリストを最も高価なものから最も安価なものまで並べ替えて返すSQLクエリを作成する必要があります。

これには distinct を使用しますか? すべての一意の結果を取得するため、または外部キーを活用するため。

これは機能しますか?

答え1

はい、次のようなものです:

SELECT DISTINCT * 
FROM classes
WHERE ID IN 
(SELECT classNum  FROM taught WHERE date = CONVERT(...,Aug 6 2015 ))
ORDER BY cost ASC

答え2

私は次の構造を使用しました...

CAST(FLOOR(CAST(@date as FLOAT)) を DateTime としてキャストします);

これは、日付を浮動小数点数に変換し、浮動小数点数の小数点数である「時間」部分を切り捨てることで、日付から時間を削除します。

見た目は少し不格好ですが、1 日を通して繰り返し使用する大規模なデータセット (約 100,000 行) ではうまく機能します。

関連情報