Ich habe eine Datenbank mit 3 Tabellen classes
:, teacher
und 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.