Ich studiere morgen für meine Datenbank-System-Prüfung, und ich arbeite an einer SQL-Frage. Diese Frage ist der einzige aus dem Papier, das keine Antwort haben, aber hier ist die Frage:SQL Query Ausgabe "ja"
Wir verwenden das folgende Schema:
- Professor (Name, Büro, dept (Alter ist Schlüssel)
- Kurs (cno, Titel, Abteilung) (cno steht für Kursnummer und ist ein Schlüssel, Titel ist der Name des Kurses und Abteilung ist Name der Abteilung, die den Kurs anbietet)
- Enrollment (CNO, Semester, inst_name, Einschreibung) (der Schlüssel dafür ist, (CNO, Semester)
Frage: Schreiben Sie die folgende SQL-Abfrage: Ausgabe eine Tabelle, die die einzelne Zeile "Ja" enthält, in es, wenn der Altersunterschied zwischen den ältesten und den jüngsten Professoren der Datenbanksysteme Kurs zwischen 2000 und 2009 Unterricht ist höchstens 5 Jahre
ich amn't sicher, dass mein Ansatz richtig ist, da wir nicht genau das tun, möchte etwas aus der Tabelle ausgeben. Beachten Sie, dass ich glaube, dass die Einschreibung dem Zeitpunkt entspricht, zu dem der Ausbilder mit dem Kurs begonnen hat (was nicht die übliche Definition AFAIK ist).
Mein Ansatz ist wie folgt:
WITH dbsProfs AS (
SELECT P.age
FROM Professor P, Enroll E, Course C
WHERE P.name = E.inst_name AND C.cno = E.cno AND C.title = "Database Systems"
AND E.enrollment BETWEEN 2000 and 2009
)
SELECT "Yes"
FROM dbsProfs
WHERE MAX(dbsProfs.age) - MIN(dbsProfs.age) <= 5
Ich bin ziemlich zuversichtlich, mit meiner temporären Tabelle. Ich mache einen Join an allen 3 Tabellen und filtere nur diejenigen heraus, die für meine Abfrage relevant sind. Es ist die andere Hälfte, über die ich mir nicht sicher bin.
Jeder Einblick darauf, ob dies richtig ist/wie dies zu korrigieren ist, würde sehr geschätzt werden. Ich amn't überzeugt WHERE MAX(dbsProfs.age) - MIN(dbsProfs.age) <= 5
gilt SQL
Post die Frage ist, wird die Seite für einige von uns gesperrt. – sagi
@sagi Ich entschuldige mich. Der Beitrag wurde aktualisiert – user3186023