Avatar billede jakobclausen Nybegynder
06. september 2003 - 13:00 Der er 17 kommentarer og
1 løsning

Hjælp til SQL forespørgsel

Det jeg gerne vil er at kunne lave følgenden forespørgsel:

Vis navne på de medarbejdere der enten arbejder over 10 timer i afdeling "administration" eller arbejder på project "ProductY" (hvis en medarbejder opfylder begge betingelser skal vedkommende kun vises én gang i resultatet)

Jeg har en database med 6 tabeller, se oversigt her:
http://www.bokaj.dk/sql/company.htm

Kan du hjælpe mig med at lave SQL sætningen til forespørgslen?
Avatar billede jakobclausen Nybegynder
06. september 2003 - 13:14 #1
Hvis det er nødvendigt kan I godt få lov til at se indholde af de forskellige tabeller.
Avatar billede arne_v Ekspert
06. september 2003 - 14:55 #2
Skuf fra hoften:

SELECT FNAME,LNAME FROM Employee,Works_on,Department
WHERE Employee.SSN=Works_on.ESSN AND Employee.DNO=Department.DNUMBER AND
(Works_on.PNO=ProducctY OR
(Employee.DNAME='administration' AND Works_on.HOURS > 10))
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:10 #3
arne_v >> WORKS_ON.PNO indholder projekt nummeret og derfor ikke productY som er projektnavnet (DEPARTMENT.DNAME)

Mine tabel navne er skrevet med stort!
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:10 #4
Du kan få lov til at tage et kig i databasen: www.bokaj.dk/php/admin/
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:16 #5
Ahh undskyld Projekt navnet ligger i PROJECT.PNAME
Avatar billede arne_v Ekspert
06. september 2003 - 15:18 #6
Så skal der vel bare en tabel mere på:

SELECT FNAME,LNAME
FROM EMPLOYEE,WORKS_ON,DEPARTMENT,PROJECT
WHERE EMPLOYEE.SSN=WORKS_ON.ESSN AND
      EMPLOYEE.DNO=DEPARTMENT.DNUMBER AND
      WORKS_ON.PNO=PROJECT.PNUMBER AND
      (PROJECT.PNAME='ProductY' OR (DEPARTMENT.DNAME='Administration' AND WORKS_ON.HOURS > 10))
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:20 #7
Arne_v >> Ok nu er vi på rette vej, men det giver jo så samme bruger flere gange, som der ikke måtte:

Jennifer Wallace
Jennifer Wallace
Ahmad Jabbar
Alicia Zelaya
John Smith
Franklin Wong
Joyce English
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:23 #8
Men hvorfor er "Jennifer Wallace" med to gange? Hun arbejder i administrationen, men ikke på productY
Avatar billede arne_v Ekspert
06. september 2003 - 15:25 #9
Så smækker vi bare en distinct på:

SELECT DISTINCT FNAME,LNAME
FROM EMPLOYEE,WORKS_ON,DEPARTMENT,PROJECT
WHERE EMPLOYEE.SSN=WORKS_ON.ESSN AND
      EMPLOYEE.DNO=DEPARTMENT.DNUMBER AND
      WORKS_ON.PNO=PROJECT.PNUMBER AND
      (PROJECT.PNAME='ProductY' OR (DEPARTMENT.DNAME='Administration' AND WORKS_ON.HOURS > 10))
Avatar billede arne_v Ekspert
06. september 2003 - 15:26 #10
Jeg tror at det er fordi folk er mere end en gang i WORKS_ON at de
dukker op flere gange.
Avatar billede arne_v Ekspert
06. september 2003 - 15:27 #11
Hvis ikke det her var MySQL så vill vi bruge IN SELECT i.s.f. JOIN
og så undgik vi det problem.
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:27 #12
ok, hvad gør Distict helt præcis?

Det kan godt være jeg ikke har ret, men burde "Ramesh Narayan" ikke også være med?
Avatar billede arne_v Ekspert
06. september 2003 - 15:30 #13
DISTINCT = udelad duplikater
Avatar billede arne_v Ekspert
06. september 2003 - 15:32 #14
Så vidt jeg kan se er Ramesh en Research & ProductZ !?
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:33 #15
Ok
Sidder og kigger på indholdet af de forskellige tabeller, og "Ramesh" skal selvfølgelig ikke være med. Men burde Franklin Wong så være det?

Han arbejde ikke i administrationen og umiddelbart heller ikke på ProductY
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:34 #16
Bare glem det, det er mig der kigger forkert.
Post et svar, og pointene er dine
Avatar billede arne_v Ekspert
06. september 2003 - 15:35 #17
svar
Avatar billede jakobclausen Nybegynder
06. september 2003 - 15:36 #18
Tak for hjælpen og god weekend!
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