webForumDet fria alternativet
Logga in / Bli medlem

Join-problem

Databaser & SQL

4 svar · 177 visningar · startad av wazid

Medlem sedan maj 2001156 inlägg
Trådstart#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

Medlem sedan dec. 200012 464 inlägg
#2

Använd left outer join istf inner join.

Medlem sedan maj 2001156 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

Medlem sedan dec. 200012 464 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
Medlem sedan maj 2001156 inlägg
#5

Fantastiskt!

Det fungerar - Bugar och bockar!

385 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
119 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)