Avatar billede timelord Nybegynder
13. september 2010 - 21:23 Der er 5 kommentarer og
1 løsning

Problemer med SQL Sætning

Jeg har følgende SQL sætning som volder mig lidt problemer:

SELECT DISTINCT
Arrangementer.ID,
Arrangementer.Overskrift,
Arrangementer.Beskrivelse,
(Arrangementer.Antal - (SELECT SUM(Antal) FROM Tilmeldte WHERE Tilmeldte.ArrangementID=Arrangementer.ID)) AS Antal
FROM Arrangementer
WHERE Dato BETWEEN '2010-09-13' AND '2010-12-13'
ORDER BY Dato

Tabellen Arrangementer indeholde en række arrangementer.
Tabellen Tilmeldte indeholde en række tilmeldte til arrangementerne, ArrangementID i Tilmeldt er lig med ID i arrangementer.

Den viser godt nok Arrangementer, men kun hvis de også findes i Tilmeldte, findes de ikke er retur variablen lig med NULL.

Jeg kan simpelhen ikke få dette script til at returner 0 i stedet for NULL.

Jeg vil blive glad for at få alt den hjælp jeg kan. Jeg står nemlig og skal bruge det a.s.a.p.
Avatar billede arne_v Ekspert
13. september 2010 - 21:32 #1
ISNULL(SUM(Antal),0)

?
Avatar billede timelord Nybegynder
13. september 2010 - 21:40 #2
Kan du fortælle mig hvor jeg skal sætte det ind i min sætning så det virker?

Det skal nemlig udføres fra en sætning!
Avatar billede timelord Nybegynder
13. september 2010 - 21:53 #3
Jeg fik det til at virker nu med hjælp af ISNULL.

Ny kode:
SELECT DISTINCT
Arrangementer.ID,
Arrangementer.Overskrift,
Arrangementer.Beskrivelse,
IF (ISNULL(
    (SELECT SUM(Antal) FROM Tilmeldte WHERE Tilmeldte.ArrangementID=Arrangementer.ID)),
    Arrangementer.Antal,
    (Arrangementer.Antal - (SELECT SUM(Antal) FROM Tilmeldte WHERE Tilmeldte.ArrangementID=Arrangementer.ID))) AS Antal
FROM Arrangementer
WHERE Dato BETWEEN '2010-09-13' AND '2010-12-13'
ORDER BY Dato

Smid et svar og du skal få diner points
Avatar billede arne_v Ekspert
13. september 2010 - 22:05 #4
Jeg taenkta faktisk:

SELECT DISTINCT
Arrangementer.ID,
Arrangementer.Overskrift,
Arrangementer.Beskrivelse,
(Arrangementer.Antal - (IFNULL(SELECT SUM(Antal),0) FROM Tilmeldte WHERE Tilmeldte.ArrangementID=Arrangementer.ID)) AS Antal
FROM Arrangementer
WHERE Dato BETWEEN '2010-09-13' AND '2010-12-13'
ORDER BY Dato
Avatar billede arne_v Ekspert
13. september 2010 - 22:06 #5
og et svar
Avatar billede timelord Nybegynder
13. september 2010 - 22:15 #6
Jeg får faktisk en SQL fejl hvis jeg prøver din løsning, hvorimod min køre fint.

Også selvom jeg rettede IFNULL til ISNULL
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester