22. marts 2001 - 09:59Der er
12 kommentarer og 1 løsning
join -udvidet left join
Jeg har tre tabeller. 1. tabel med id1, navn, adresse, osv 2. tabel med id2, data, osv 3. tabel der er en relation mellem de to øvrige med id, id1, id2 osv. Nu vil jeg lave en forespørgsel hvor jeg henter ALLE poster fra tabel 1, og i de tilfælde at der er noget indhold i talbel 2, skal det også med. Jeg får kun de poster, der har indhold i både tabel 1 og 2. Har prøvet at rette inner join til left join, men access protesterer.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Den forespørgsel, som du forsøger at sende afsted. I forespørgselsdesign, kan vælge menuen Vis->SQL-visning. Så ser du den rene SQL, som du så kan kopiere ind her :-)
Uha - der viste jeg, at jeg ikke kan læse indenad. Her er min sætning SELECT Entity.Id, Entity.Name, Entity.Address1, Membership.MembershipName FROM Membership INNER JOIN (Entity left JOIN MemberShipEntityRelation ON Entity.Id = MemberShipEntityRelation.EntityID) ON Membership.ID = MemberShipEntityRelation.MembershipID;
Jeg har lidt svært ved at gennemskue det, når jeg ikke kender datatyper og felter i tabellerne. Men jeg ved, at Access ofte kræver at man bruger Left-joins hele vejen gennem alle tabeller. Dvs, hvis du bruger left-join mellem 2 af tabellerne, så skal du også have det mellem de 2 sidste. Og de skal pege samme vej.... Har du prøvet det?
Joinudtrykket understøttes ikke. Hvis jeg erstatter min left join med inner join, accepterer access det. Men så får jeg kun de poster fra tabel 1(entity) som har data i tabel 2.(membership)
Hej Thomas. Jeg kan ikke gennemskue det. Men jeg har prøvet at erstatte begge joins med left joins og får igen besked om at joinudtrykket ikke understøttes. bodil
HVis jeg forstår dig rigtigt, så indeholder tabel 1 personer og tabel 2 indeholder data omkring personen. Hvordan er relationen: 1. Der er kun 1 record i tabel 2, der passer til en person i tabel 1. 2. Der er mange records i tabel 2, der passer til en person i tabel 1.
Og desuden 3. Kan samme record i tabel 2 passe til mere end én person i tabel 1.
Hvis det er sådan, at mange records i tabel 2 passer til en og kun en person i tabel 1, så skal du ikke benytte tabel 3 !!! Da skal du istedet lave et felt i tabel 2, der angiver ID for personen fra tabel 1. OG så skal du benytte en simpel LEFT Join imellem de to tabeller, så alle personer (der opfylder evt. kriterier) vises og eventuelle data fra tabel 2, der passer til disse personer, vises.
SELECT Entity.Id, Entity.Name, Entity.Address1, Membership.MembershipName FROM Membership RIGHT JOIN (Entity LEFT JOIN MemberShipEntityRelation ON Entity.Id = MemberShipEntityRelation.EntityID) ON Membership.ID = MemberShipEntityRelation.MembershipID;
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.