Vinnaren i pepparkakshustävlingen!
2011-04-07, 11:06
  #1
Medlem
Jag har haft stora problem med en otrolig kurs i databas som är det enda jag har kvar för att få ut min examen. I uppgiften har jag satt upp en databas i Access för en skola och på denna fråga jag fått rest på ska jag:

"Visa antal kurstillfällen per kurs under 2008! Samtliga kurser skall finnas med."

Jag har löst det med en UNION på detta sätt:

Kod:
SELECT Kursnamn, COUNT(*) AS Antal
FROM Kurstillfälle
WHERE Datum BETWEEN CDate('2008-01-01') AND CDate('2008-12-31')
GROUP BY Kursnamn
UNION SELECT DISTINCT namn, 0
FROM Kurs, Kurstillfälle
WHERE Kurstillfälle.Datum BETWEEN CDate('2008-01-01') AND CDate('2008-12-31')
AND Kurs.namn NOT IN (SELECT kursnamn FROM Kurstillfälle);

SQL-satsen verkar ta fram rätt information, men läraren skriver "Vad gör den undre delen av union? Kolla era villkor." Så vad har jag missat?
Citera
2011-04-07, 11:33
  #2
Medlem
tror att du i den sista raden

AND Kurs.namn NOT IN (SELECT kursnamn FROM Kurstillfälle);

även ska ha med "AND Datum NOT BETWEEN CDate('2008-01-01') AND CDate('2008-12-31').

Just nu filtrera du ju bort ALLA kurstillfällen med (AND Kurs.namn NOT IN (SELECT kursnamn FROM Kurstillfälle)

Du vill ju endast filtrera bort de som varit mellan mellan 2008-01-01 och 2008-12-31, dvs de du redan räknat in ovanför

är inte helt insatt och kan ha helt fel.. men hoppas det hjälpte
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback