2011-09-30, 09:09
#1
Har suttit i några dagar men inte lyckats förstå varför svaret inte blir rätt.
d) Skriv en SQL-sats som för varje lärare anger vilka kurser de undervisar på under innevarande år. Frågan skall alltså vara dynamisk, så att året från aktuellt datum används i utsökningen! Signatur, namn och programnamn skall finnas med i resultattabellen.
SELECT sign, namn, progNamn
FROM Program, Larare
WHERE (SELECT DATENAME(year, anstDatum )) = (SELECT DATENAME(year, GETDATE()))
e) Skriv en SQL-sats som för varje kursinstans ger en sammanställning över hur mycket av kursbudgeten som är planerad. Ange kursNamn, budgetTim och differensen mellan kursbudgeten och de planerade timmarna.
SELECT kursNamn,budgetTim,-timmar+budgetTim AS [Diff]
FROM Undervisning u
JOIN (SELECT kursNamn, budgetTim, kursAnsvar FROM KursInstans ki JOIN Kurs k ON ki.kurskod = k.kurskod) kik
ON u.[sign] = kik.kursAnsvar
f) Skriv en SQL-sats som plockar ut de kurser där det är planerat för mycket timmar i förhållande till budget. Ange kursNamn och hur mycket övertid som är inplanerad.
SELECT kursNamn, (budgetTim - timmar) AS Överflöd
FROM Undervisning u
JOIN (SELECT kursNamn, budgetTim, kursAnsvar FROM KursInstans ki JOIN Kurs k ON ki.kurskod = k.kurskod) kik
ON u.[sign] = kik.kursAnsvar
Så här ser tabellerna ut
Undervisning
sign kurskod period timmar
CES NDA01G 201101 200
CES NPT021 201102 105
ULJ NPT021 201102 115
ANP NSA011 201102 200
ANP NDA01G 201101 90
SAAH NDA01G 201101 90
XYZ NDA01G 201101 28
KursInstans
kurskod period kursAnsvar budgetTim antalStud
.. .. .. ..
Larare
sign namn befattn rum e-post anstDatum
Kurs
kurskod kursNamn poäng niva
Program
progID progNamn poäng examen
programKurs
kurskod progID ar
När de två sista körs så får vi för många kurser.
d) Skriv en SQL-sats som för varje lärare anger vilka kurser de undervisar på under innevarande år. Frågan skall alltså vara dynamisk, så att året från aktuellt datum används i utsökningen! Signatur, namn och programnamn skall finnas med i resultattabellen.
SELECT sign, namn, progNamn
FROM Program, Larare
WHERE (SELECT DATENAME(year, anstDatum )) = (SELECT DATENAME(year, GETDATE()))
e) Skriv en SQL-sats som för varje kursinstans ger en sammanställning över hur mycket av kursbudgeten som är planerad. Ange kursNamn, budgetTim och differensen mellan kursbudgeten och de planerade timmarna.
SELECT kursNamn,budgetTim,-timmar+budgetTim AS [Diff]
FROM Undervisning u
JOIN (SELECT kursNamn, budgetTim, kursAnsvar FROM KursInstans ki JOIN Kurs k ON ki.kurskod = k.kurskod) kik
ON u.[sign] = kik.kursAnsvar
f) Skriv en SQL-sats som plockar ut de kurser där det är planerat för mycket timmar i förhållande till budget. Ange kursNamn och hur mycket övertid som är inplanerad.
SELECT kursNamn, (budgetTim - timmar) AS Överflöd
FROM Undervisning u
JOIN (SELECT kursNamn, budgetTim, kursAnsvar FROM KursInstans ki JOIN Kurs k ON ki.kurskod = k.kurskod) kik
ON u.[sign] = kik.kursAnsvar
Så här ser tabellerna ut
Undervisning
sign kurskod period timmar
CES NDA01G 201101 200
CES NPT021 201102 105
ULJ NPT021 201102 115
ANP NSA011 201102 200
ANP NDA01G 201101 90
SAAH NDA01G 201101 90
XYZ NDA01G 201101 28
KursInstans
kurskod period kursAnsvar budgetTim antalStud
.. .. .. ..
Larare
sign namn befattn rum e-post anstDatum
Kurs
kurskod kursNamn poäng niva
Program
progID progNamn poäng examen
programKurs
kurskod progID ar
När de två sista körs så får vi för många kurser.