Avatar billede jmc Nybegynder
06. september 2005 - 22:59 Der er 3 kommentarer og
1 løsning

Hvordan gør jeg med denne SQL distinct?

SELECT jobs.job_id, Sum(timer.timer) AS SumOftimer, timer.oprettet, ansatte.brugernavn, ansatte.ansatte_id, jobs.jobnavn, kunder.firma
FROM ((ansatte INNER JOIN ansatte_job ON ansatte.ansatte_id = ansatte_job.ansatte_id) INNER JOIN (jobs INNER JOIN timer ON jobs.job_id = timer.job_id) ON ansatte_job.job_id = jobs.job_id) INNER JOIN kunder ON jobs.kunde_id = kunder.kunde_id
GROUP BY jobs.job_id, timer.oprettet, ansatte.brugernavn, ansatte.ansatte_id, jobs.jobnavn, kunder.firma;

Jeg skal have jobs.job_id til at være DISTICT.
Samtidligt at give en sum for timerne som er brugt.
Den lister af en eller anden grund flere med det samme jobid.

dvs.
job_id    SumOftimer    oprettet    brugernavn    ansatte_id    jobnavn    firma
3    1    05-09-2005    hugo    4    Web1    M1
3    3    06-09-2005    hugo    4    Web1    M1
4    3    16-08-2005    hugo    4    Web2    M2

Prøv at se, her fremkommer 3 to gange?
Har du en ide?
Avatar billede kjulius Novice
07. september 2005 - 01:39 #1
Det er fordi du har oprettet to rows i tabellen "timer" med samme jobid, men med forskellig oprettelsesdato.

Hvis du skal bruge oprettelsesoplysningen, er du nødt til at afgøre om du er interesseret i datoen for den første registrering, eller den sidste registrering. Med andre ord, er du nødt til at bruge MIN(timer.oprettet) eller MAX(timer.oprettet):

SELECT jobs.job_id, Sum(timer.timer) AS SumOftimer, MIN(timer.oprettet) AS FørstOprettet, ansatte.brugernavn, ansatte.ansatte_id, jobs.jobnavn, kunder.firma
FROM ((ansatte INNER JOIN ansatte_job ON ansatte.ansatte_id = ansatte_job.ansatte_id) INNER JOIN (jobs INNER JOIN timer ON jobs.job_id = timer.job_id) ON ansatte_job.job_id = jobs.job_id) INNER JOIN kunder ON jobs.kunde_id = kunder.kunde_id
GROUP BY jobs.job_id, ansatte.brugernavn, ansatte.ansatte_id, jobs.jobnavn, kunder.firma;

Alternativt kan der naturligvis også være tale om en fejl, at der er to oprettelser...
Avatar billede jmc Nybegynder
20. oktober 2005 - 09:23 #2
takker, vil du sende som svar så jeg kan lukke
Avatar billede kjulius Novice
20. oktober 2005 - 21:42 #3
Her har du et svar...
Avatar billede jmc Nybegynder
17. januar 2006 - 10:12 #4
takker
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
Kurser inden for grundlæggende programmering

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