Avatar billede tigtak Nybegynder
23. maj 2004 - 19:15 Der er 6 kommentarer og
2 løsninger

Sql syntax: 1 til mange . mange til en

Har tre tabeller Employee, Workgroup og employee_vorkgroup.

En employee kan være medlem af flere workgroups og en workgroup kan have flere medlemmer -derfor er employee_workgroup blot et bindeled i mellem tabellerne

Employee har bl.a. en ID
Workgroup har bla.en ID, navn , og beskrivelse
employee_workgroup har kun sit eget ID, samt employeeId og workgroupID

Jeg vil nu gerne udfra et employee id, få fat i denne employess workgroups navn og beskrivelse ( kan være flere workgrups -> flere navne og beskrivelser)

forslag til  sql syntax ?
Avatar billede chrisser_vest Nybegynder
23. maj 2004 - 19:34 #1
Hey Tiqtak !

For det første tror jeg godt at du kan udelade ID i din employee_workgroup-tabel, da du har en sammensat fremmednøgle, og den derfor bliver overflødig.

Dvs. at din tabel-struktur (mener jeg) bør se ud som flg:

Employee:
  ID

employee_workgroup    <--- du fungerer som en pointer-tabel !
  employeeID
  workgroupID

Workgroup:
  ID
  navn
  beskrivelse


men jeg vil umiddelbart skyde på at din select skal se ud ala:

SELECT w.id, w.navn, w.beskrivelse
FROM employee e, employee_workgroup ew, workgroup w
WHERE e.id = ew.employeeID
AND ew.workgroupID = w.id
AND e.id = 1    <--- her indsætter du så den employee du vil have oplysninger om.


...i think...
Avatar billede terry Ekspert
23. maj 2004 - 19:57 #2
If you are not interested in other information for the employee than the employee id then you dont need the employee table as the ID is in the employee_workgroup table

SELECT employee_workgroup.EmployeeID, workgroup.ID, workgroup.navn, workgroup.beskrivelse
FROM workgroup INNER JOIN employee_workgroup ON workgroup.ID = employee_workgroup.workgroupID

and if you want the empployee information then you will need all three tables

SELECT Employee.*, employee_workgroup.EmployeeID, workgroup.ID, workgroup.navn, workgroup.beskrivelse
FROM Employee INNER JOIN (workgroup INNER JOIN employee_workgroup ON workgroup.ID = employee_workgroup.workgroupID) ON Employee.ID = employee_workgroup.EmployeeID
Avatar billede terry Ekspert
23. maj 2004 - 19:58 #3
this is actually a many-to-many relationship which always needs three tables
Avatar billede terry Ekspert
23. maj 2004 - 19:59 #4
the syntax can vary depending on which dB you are using, this should work in Access and SQL server
Avatar billede deric Nybegynder
23. maj 2004 - 20:11 #5
www.hotweb.tk - den kan faktisk bruges til lidt af hvert (:



Så bare chek den ud, der er nok noget du kan bruge -


- www.hotweb.tk
Avatar billede terry Ekspert
23. maj 2004 - 20:14 #6
deric>http://www.eksperten.dk/regler.phtml
2. Regler for brug af eksperten.dk
  6. gøre reklame for andre websider, med mindre det foregår som relevant svar i et spørgsmål.
Avatar billede terry Ekspert
23. maj 2004 - 20:15 #7
where can I find help on this question?
Avatar billede terry Ekspert
24. maj 2004 - 19:20 #8
tak
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