Avatar billede chrisrj Forsker
06. juli 2006 - 11:22 Der er 7 kommentarer og
1 løsning

Problem med select med subselects

Jeg prøver at få denne select til at returnere alle medarbejdere som har registreret tid på en specifik opgave i en specifik måned, men den returnere kun resultatet fra een medarbejder.

select a_hours, assignmentid, employeedayid
from timespent
where employeedayid
in (
    select id
    from employeeday
    where workdayid
    in (
          select id
          from workday
          where workmonthid=2976
          )
    )
and assignmentid=278

Hvad mangler jeg??
Avatar billede dr_chaos Nybegynder
06. juli 2006 - 12:52 #1
Kan du ikke bruge noget i denne stil :
select *
from timespent tp
JOIN employeeday ed ON ed.id = tp.employeedayid
JOIN workday wd ON wd.id = ed.workdayid
WHERE assignmentid=278
Avatar billede chrisrj Forsker
06. juli 2006 - 13:00 #2
Mnej, det giver bare alle registrerede time for een medarbejder - i ALLE måneder...
Avatar billede chrisrj Forsker
06. juli 2006 - 13:21 #3
Det der undre mig mest, er, at den vise kun dem fra den aktuelle bruger - ikke bare den første i db'en...
Avatar billede ffsoft Praktikant
06. juli 2006 - 13:59 #4
Start baglæns:

select id from workday where workmonthid=2976;

giver den det resultat du forventer??? Brug resultatet i næste forespørgsel:

select id from employeeday where workdayid  in (Resultat);

giver den det resultat du forventer??? Brug resultatet i første forespørgsel:

select a_hours, assignmentid, employeedayid
from timespent
where employeedayid
in (Resultat) and assignmentid=278

Det skulle gerne give en ide om hvor det er galt.
Avatar billede chrisrj Forsker
06. juli 2006 - 14:05 #5
select id from workday where workmonthid=2976

Virker fint.

select id from employeeday where workdayid  in (select id from workday where workmonthid=2976)


Virker fint.

select a_hours, assignmentid, employeedayid
from timespent
where employeedayid
in (select id from employeeday where workdayid  in (select id from workday where workmonthid=2976)) and assignmentid=278

Virker ikke - der mangler den ene anden medarbejder der også har registreret opgaven.
Avatar billede chrisrj Forsker
06. juli 2006 - 14:15 #6
Nå ja, så fandt jeg problemet - hver medarbejder har sit EJET assignmentid pr. opgave!! :(( totalt nederen...

Så skal jeg "bare" finde ud af hvordan jeg finder ud hvilke assignmentid'er hver opgave har.... :s

Nogen ideer?? :)
Avatar billede chrisrj Forsker
06. juli 2006 - 14:29 #7
Jeg fandt løsningen:

select a_hours, assignmentid, employeedayid
from timespent
where employeedayid
in (select id from employeeday where workdayid  in ( select id from workday where workmonthid=2976)) and assignmentid in (select id from assignment where taskid in ( select taskid from assignment where id=278))

En extra subselect med en subselect til at finde dem med. :)


Tak for at hjælpe mig til finde problemet!!

ffsoft -> Smid et svar, hvis du vil have nogle points! :)
Avatar billede ffsoft Praktikant
06. juli 2006 - 15:24 #8
Et svar ;0)
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