Wählen Sie „Abweichend von“ nach einem bestimmten Datum

Wählen Sie „Abweichend von“ nach einem bestimmten Datum

Ich habe eine Datenbank mit 3 Tabellen classes:, teacherund taught:

Klassen

  • ID (Klassennummer)
  • Titel (Klassentyp)
  • Kosten (KlassenKosten)

Lehrer

  • eindeutige Ganzzahl (Lehrernummer)

gelehrt

  • classNum (Fremdschlüssel)
  • Lehrernummer (Fremdschlüssel)
  • Datumsfeld (Klassendatum)

Ich muss eine Abfrage in SQL schreiben, die eine Liste der einzigartigen Kurse zurückgibt, die seit dem 6. August 2015 unterrichtet wurden, sortiert vom teuersten zum günstigsten

Würde ich hierfür distinct verwenden? Um alle eindeutigen Ergebnisse zu erhalten oder die Fremdschlüssel zu nutzen.

Ob das funktioniert?

Antwort1

Ja, so etwas wie:

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

Antwort2

Ich habe die folgende Konstruktion verwendet ...

CAST(FLOOR(CAST(@date als FLOAT)) als DateTime);

Dadurch wird die Uhrzeit aus dem Datum entfernt, indem es in eine Gleitkommazahl umgewandelt wird und der „Zeit“-Teil, also die Dezimalstelle der Gleitkommazahl, abgeschnitten wird.

Sieht etwas klobig aus, funktioniert aber gut bei einem großen Datensatz (~100.000 Zeilen), den ich den ganzen Tag über wiederholt verwende.

verwandte Informationen