webForumDet fria alternativet

Join-problem

4 svar · 177 visningar · startad av wazid

wazidMedlem sedan maj 2001166 inlägg
#1

Hej

Jag har ett problem med att joina två tabeller.
Om jag tex har en tabell med alla medlemmar.
Sedan har jag en tabell med alla hus.
I tabellen hus finns ett fält som står för kopplingen till räknaren i medlemstabellen.
En medlem kan ha flera hus, samt det finns medlemmar utanhus.

Om jag kör en join så får jag ut recordset med medlemmar med hus.
Men hur gör jag för att få ut ett resultat där alla medlemmar är med och till dem eventuella hus?

MvH

David

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Använd left outer join istf inner join.

wazidMedlem sedan maj 2001166 inlägg
#3

Hej LarsG

Det funkade i just detta fallet. En Accessdatabas med två tabeller.

Glad i hågen gick jag på en annan gammal surdeg där jag trodde mig kunna lösa det på liknande sätt, men tji fick jag.

SELECT     Huvudtabell.*, OAGRPR.OLAGPR, OAGRPR.OLQTYL, Undertabell.ID_under, Undertabell.Artnr, Undertabell.Forpstl, Undertabell.Enhet, 
                      Undertabell.Ant_forp, Huvudtabell.Url_txt, Huvudtabell.Url
FROM         Undertabell INNER JOIN
                      Huvudtabell ON Undertabell.MainID = Huvudtabell.ID INNER JOIN
                      OAGRPR ON Undertabell.Artnr = OAGRPR.OLITNO
WHERE     (Undertabell.Status < 90) AND (OAGRPR.OLCUNO = '00101 ') AND (Huvudtabell.Produktgrupp = '31') AND (OAGRPR.OLSTDT = '20020815')
ORDER BY Undertabell.Forpstl

Ovan ser man koden.

Mitt problem är att jag vill få ut alla poster från Undertabell, även de som inte har en koppling i OAGRPR.
Har här försökt med LEFT OUTER JOIN, men utan att lyckas.
Jag vore tacksam för lite hjälp på vägen.

MvH

David

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Access är ju väldigt speciellt om man har flera join. En sak är att det är meningslöst att sätt villkor på den högra tabellen i where eftersom det innebär att man tar bort alla poster som är null, dvs de som inte matchar.

SELECT Huvudtabell.*, 
       OAGRPR.OLAGPR, 
       OAGRPR.OLQTYL, 
       Undertabell.ID_under, 
       Undertabell.Artnr, 
       Undertabell.Forpstl, 
       Undertabell.Enhet, 
       Undertabell.Ant_forp
  FROM (Undertabell INNER JOIN Huvudtabell 
    ON (Undertabell.MainID = Huvudtabell.ID ) ) left outer JOIN OAGRPR 
    ON ( Undertabell.Artnr = OAGRPR.OLITNO  
     AND OAGRPR.OLCUNO = '00101 ' 
     AND OAGRPR.OLSTDT = '20020815') 
 WHERE Undertabell.Status < 90
   AND Huvudtabell.Produktgrupp = '31'
 ORDER BY Undertabell.Forpstl
wazidMedlem sedan maj 2001166 inlägg
#5

Fantastiskt!

Det fungerar - Bugar och bockar!

Genererad på 397 ms · cache AV · v20260730165559-full.f96bc7eb