21. april 2005 - 09:58Der er
15 kommentarer og 1 løsning
Hjælp til sql
Jeg har brug for lidt hjælp til lidt sql.
jeg skal finde et liste over medarbejdere der IKKE har registreret på en given dag. Jeg kan godt finde medarbejderne på dagen, men jeg får ALLE medarbejderne, også dem der HAR registreret. Hvordan løser jeg det?
Min sql: select distinct employeeday.workdayid,employee.id,employee.name from employeeday,employee where employeeday.workdayid=192 order by employee.name
Jeg arbejder forøvrigt i asp op imod en PostgreSQL(v. 8.0) db, hvis det skulle have noget at sige....
Sig endelig til, hvis du/I har behov for flere oplysninger.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Øh ja, det giver så en liste med de rigtige medarbejdere - de står der bare ca.20-30 gange hver :)
Sådan ser det ud nu: select distinct employeeday.workdayid,employee.id,employee.name from employee where not employee.id in (select employeeday.employeeid from employeeday where employeeday.workdayid=192) order by employee.name
hmm... jeg kender ikke postgresql, men hvis du bruger select from employee where not employee.id in (select employeeday.employeeid from employeeday where employeeday.workdayid=192)
så kan den ikke hente flere data ud end select from employee
medmindre der er en bug i postgressql, så den laver en join istedetfor en ægte subselect. underligt.
"jeg forstår heller ikke helt, at den første select er tom. hvis det er "select * from employee" du mener."
Heh, det er nok fordi jeg havde bare taget den direkte, dvs. uden *. :)
Mine tabeller ser således ud: CREATE TABLE employee ( id int8 NOT NULL, name varchar(255), fname varchar(50), lname varchar(50), email varchar(255), pwd varchar(50), departmentid int8, employeetypeid int8, CONSTRAINT employee_id PRIMARY KEY (id), CONSTRAINT department_fk FOREIGN KEY (departmentid) REFERENCES department (id) ON UPDATE RESTRICT ON DELETE RESTRICT, CONSTRAINT employeetype_fk FOREIGN KEY (employeetypeid) REFERENCES employeetype (id) ON UPDATE RESTRICT ON DELETE RESTRICT ) WITHOUT OIDS; ALTER TABLE employee OWNER TO brugernavn; GRANT ALL ON TABLE employee TO brugernavn; GRANT ALL ON TABLE employee TO brugernavn;
CREATE TABLE employeeday ( id int8 NOT NULL, employeeid int8 NOT NULL, workdayid int8 NOT NULL, arrival timestamp, departure timestamp, CONSTRAINT emplyeeday_id PRIMARY KEY (id), CONSTRAINT employee_fk FOREIGN KEY (employeeid) REFERENCES employee (id) ON UPDATE RESTRICT ON DELETE RESTRICT, CONSTRAINT workday_fk FOREIGN KEY (workdayid) REFERENCES workday (id) ON UPDATE RESTRICT ON DELETE RESTRICT ) WITHOUT OIDS; ALTER TABLE employeeday OWNER TO brugernavn;
"jeg formoder at employee tabellen burde indeholde en row for hver ansat, og employeeday en row per ansat per dag der er indrapporteret " Jeps :)
umiddelbart ville jeg mene at mit SQL burde virke, men enten har jeg overset noget, eller så opfører postgressql sig bare ikke som den burde iflg. min mening :-/
Heh, tør jeg tillade mig at mene at det er dig der har overset noget..? :)
Forøvrigt - to af dem der kommer med har slet ikke registreret sig på nogen dage overhoved(dvs. de findes slet ikke i employeeday tabellen) - ændre det noget?
...men det er jo også ligemeget - det har jeg jo i min variabel. :)
Jeg takker for hjælpen!
Synes godt om
Ny brugerNybegynder
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.