Avatar billede marleone Nybegynder
28. september 2007 - 20:45 Der er 3 kommentarer

Mystisk fejl i select forespørgelse

Hej eksperter,

Mit udtræk skal danne en liste over vikarer, antal ønsket arbejdsdage og aftaler. Listen er sorteret efter hvor mange dage de har ønsket at arbejde + hvor mange aftaler de er noteret for.

Det virker sådan set også okay, bortset fra vikar nummer et på listen, der tilsyneladende har 3 gange ønsket aftaler. Vikaren har ønsket 38 dage + fået 3 aftaler, hvilket skulle give 41, men istedet for har han ønsket 114 dage + fået 114 aftaler = 228???

SQL'en er som følger:

SELECT
vikar.id AS id,
vikar.navn AS vikar,
COUNT( kalender_onskede.fra_bruger_id ) AS antalOnsk,
COUNT( kalender_aftaler.til_bruger_id ) AS antalAft,
( COUNT( kalender_onskede.fra_bruger_id ) + COUNT( kalender_aftaler.til_bruger_id ) ) AS antalPts
FROM vikar
LEFT JOIN kalender_onskede ON vikar.id = kalender_onskede.fra_bruger_id
LEFT JOIN kalender_aftaler ON vikar.id = kalender_aftaler.til_bruger_id
WHERE status = 'Godkendt'
GROUP BY vikar
ORDER BY antalPts DESC

Håber jeg har formuleret mig korrekt, og at i kan hjælpe :-)
Avatar billede mungojerrie Nybegynder
28. september 2007 - 21:21 #1
er det ikke uheldigt at du laver en count på en left join
giver det dig ikke for mange hits?
har du test med en inner join?
Avatar billede marleone Nybegynder
30. september 2007 - 19:36 #2
Det giver kun for mange hits med person nr 1.. alle de andres hits passer fint. Problemet ved at bruge en inner join er at jeg kun få de vikarer ud der har ønsket en dato og har en aftale. Jeg skal have også have de vikarer der ikke har nogle hits ud
Avatar billede mungojerrie Nybegynder
30. september 2007 - 20:34 #3
så tror jeg ikke du kan lave udtrækket i een erklæring, men hvis du deler den i to, således du henter  antal dage i et sql udtryk og aftaler i den anden.
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