Avatar billede hlt Juniormester
30. oktober 2009 - 13:30 Der er 1 kommentar og
1 løsning

Flere joins

jeg har 3 tabeller som jeg gerne vil have indhold fra.

Der er en projekt tabel, en firmatabel samt en kontaktperson tabel.
projekttabellen indeholder altid et firmaid. Et firma har ikke nødvendigvis en kontaktperson tilknyttet.

Projekt tabellen indeholder data om et projekt, herunder firmaid, firmanavn.

Kontakterson tabellen indeholder udover kontaktoplysninger også firmaid.
jeg vil så gerne have liste følgende. Alle firmaer som deltager i et projekt, og hvis de har en kontaktperson tilknyttet skal dennes informationer også listes. men alle projekter med firma informationer skal listes.
Jeg har forsøgt med følgende sætning:
SELECT kontaktpersontabel.navn, kontaktpersontabel.mail,  projekttabel.projektoverskrift
FROM projekttabel LEFT JOIN kontaktpersontabel ON projekttabel.firmaid=kontaktpersontabel.firmaid
ORDER BY projekttabel.firmanavn;

Ovenstående sætning virker sådan set fint nok. Men jeg vil gerne have listet yderligere oplysninger fra firmatabellen. Jeg havde forstillet mig noget i denne stil, men det fejler:
SELECT kontaktpersontabel.navn, kontaktpersontabel.mail,  projekttabel.projektoverskrift, firmatabel.firmanavn
FROM projekttabel,firmatabel where projekttabel.firmaid=firmatabel.id LEFT JOIN kontaktpersontabel ON projekttabel.firmaid=kontaktpersontabel.firmaid
ORDER BY projekttabel.id

jeg håber at der er nogen som kan gennemskue det. Forresten så er det på en access database.
Avatar billede terry Ekspert
30. oktober 2009 - 14:08 #1
Dont have much time to look at this at the moment but have you tried using Access query designer? Drag and drop the tables you need and then join on the fields using the mouse. To alter an inner join to an outer join right click on the relation and make a choice when you get prompted.


If you cant get the result you want then you can send your dB with some test data and I'll see if I can find a solution a bit later today.

ekspertenATsanthell.dk

AT = @
Avatar billede fdata Forsker
02. november 2009 - 18:21 #2
Du skal nok have fat i 2 joins - i stil med:

SELECT kontaktpersontabel.navn, kontaktpersontabel.mail,  projekttabel.projektoverskrift, firmatabel.firmanavn
FROM (projekttabel LEFT JOIN kontaktpersontabel ON projekttabel.firmaid=kontaktpersontabel.firmaid) LEFT JOIN firmatabel ON projekttabel.firmaid=firmatabel.id
ORDER BY projekttabel.firmanavn;

... men det allerletteste for dig ville være at trække de tre tabeller ind i forespørgselsgitteret i en ny forespørgsel.

Så kan du trække en streg fra fra f.eks. projekttabel.firmaid til id i firmatabellen osv.

For at ændre join-typen, dobbeltklikker du på stregen.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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