Entschuldigung, ich hoffe, ich habe dies an der richtigen Stelle, aber ich habe nur ein paar Fragen zu meiner Datenbank, die ich nicht herausfinden kann, warum meine Abfragen nicht funktionieren.Oracle SQL Query 2
Meine Datenbankrelation Schema ist wie folgt:
DEPARTMENT(deptnum, descrip, instname, deptname, state, postcode)
ACADEMIC(acnum, deptnum*, famname, givename, initials, title)
PAPER(panum, d.)
AUTHOR(panum*, acnum*)
FIELD(fieldnum, id, title)
INTEREST(fieldnum*, acnum*, descrip)
1) ich finden müssen, wenn es mehr Akademiker sind, die weniger als 20 Papiere geschrieben haben. Ich muss die Acnum, den Titel, den Famnamen, die gegebene Nummer und die Anzahl der Papiere, die sie geschrieben haben, auflisten. Siehe meinen Versuch unter:
SELECT a.acnum, a.title, a.famname, a.givename, count(p.panum)
FROM ACADEMIC a
INNER JOIN PAPER p
INNER JOIN AUTHOR au ON a.acnum = au.acnum and au.panum = p.panum
GROUP BY a.ACNUM, a.title, a.famname, a.givename
HAVING COUNT(p.panum) < 20;
2) Ich muß auch mit der größten Anzahl von Wissenschaftlern, die Abteilungen finden und drucken ihre DEPTNUM, deptname und InstName, aber im einen Syntaxfehler zu bekommen. Siehe mein Versuch:
SELECT deptnum, deptname, instname, count(acnum)
FROM department, academic,
WHERE academic.deptnum = department.deptnum
GROUP BY deptnum
HAVING MAX(count(acnum));
Wenn ich verstehe Ihr Schema richtig beseitigen müssen, sollte es keine Duplikate in die "Autor" -Tabelle (eine bestimmte akademische t als Autor eines bestimmten Papiers mehr als einmal angezeigt werden). Wenn dies der Fall ist, brauchen Sie in der ersten Abfrage nur einen Join zwischen "akademisch" und "Autor" - Sie müssen sich nicht der Tabelle "Papier" anschließen. – mathguy