Avatar billede sito Nybegynder
16. marts 2003 - 17:29 Der er 9 kommentarer og
2 løsninger

outer join

hvad er syntaksen, når man i acces skal lave en full outer join. Den accepterer right outer join og left outer join, men ikke full, natural eller blot outer! Kan det skyldes de parametre de skal joine på?
Avatar billede terry Ekspert
16. marts 2003 - 17:34 #1
dont think you can make a full outer join
Avatar billede terry Ekspert
16. marts 2003 - 17:36 #2
In the query builder add the tables you want and then drag and drop the fields which are related. Now you should have a thin line (realationship) between th etwo fields . If you right click th ethin line you can alter the INNER JOIN to a LEFT OUTER or RIGHT OUTER but not a FULL OUTER
Avatar billede sito Nybegynder
16. marts 2003 - 17:38 #3
Hvordan kan man ellers løse følgende problem: jeg ønsker alle værdierne fra én tabel, og fra en anden tabel ønsker jeg de værdier der optræder i den første tabel. De steder (i tabel to) der ikke optræder i tabel 1 skal bare være null! Dette kan jeg løse med en left outer join, men problemet er, at jeg gerne vil tælle hvor mange gange værdierne fra tabel to passer med tabel et. Dette kan jeg ikke med en left join!
Avatar billede terry Ekspert
16. marts 2003 - 17:43 #4
Make a aggregate query (GROUP BY) and then you need to use Count to count the number of records in table 2
Avatar billede nih Novice
16. marts 2003 - 17:58 #5
vha en Union:

Select felt1, felt2
from tabel1 LEFT JOIN tabel2 on tabel1.felt3 = tabel2.felt3
Union
Select felt1, felt2
from tabel1 RIGHT JOIN tabel2 on tabel1.felt3 = tabel2.felt3

Niels
Avatar billede sito Nybegynder
16. marts 2003 - 18:09 #6
det spiller ikke helt, men jeg roder videre med det. Tak
Avatar billede s_mohr Nybegynder
16. marts 2003 - 23:19 #7
Du behøver ikke bruge en UNION du kan godt gøre det med en LEFT JOIN

SELECT t1.a1, COUNT(t2.a2)
FROM t1 LEFT JOIN t2
GROUP BY t1.a1

Er det sådan du mener?
Avatar billede jesperthomsen Nybegynder
19. marts 2003 - 15:06 #8
Det er faktisk ret nemt - bare vælg begge tabeller og alle værdier fra dem i designeren, eller lav et udtræk i stil med:
Select t1.*, t2.*
from Tabel1 T1, Tabel2 T2
Avatar billede hiks Nybegynder
19. marts 2003 - 21:55 #9
hiks er enig med nih!!!

jesperthomsen > Dit udtræk vil jo ikke have samme struktur som et ægte full outer join...

Fra msdn kan tilføjes...:

outer join
A join in which each matching record from two tables is combined into one record in the query's results. When a record from the table that's contributing all of its records can't be matched with a record from the other table, the record still appears in the results of the query, view, or stored procedure; however, the cells that had no matching record in the other table are empty. You can create three variations of an outer join to specify the unmatched rows to be included: left outer joins and right outer joins are in Microsoft Access databases and Microsoft Access projects; full outer joins are only in Access projects.

- og ikke mindst fremhæves:

full outer joins are only in Access projects.
Avatar billede nih Novice
19. marts 2003 - 21:55 #10
jesperthomsen -> det er ikke et full outer join, men et cross join.
Avatar billede s_mohr Nybegynder
20. marts 2003 - 10:06 #11
To tabel navne i FROM er ikke en join, men et Cartesian Product.
Tilføjes en betingelse i WHERE, kan man dog på visse måde få et resultat der miner om en join.
Problemer er bare at sito gerne ville have vist Null værdier, og det får man med en JOIN.
Ønsker man at kombinere med en UNION skal man være opmærksom på at en UNION eliminere dubletter (bags --> sets), og værdierne vises dermed kun én gang i resultatet
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