Sitter med ett meckigt problem. Kör mot Access, och ska göra en fetjoin på en fem tabeller. Hej Mmm, det är svårt att beskriva detta, eftersom det från början är ett helt gäng tabeller. Glöm C. Jag gissar på att du gjort något annat fel, följande fungerar fint för mig: "Kopplingsuttrycket stöds inte", eller något i den stilen. Sitter tyvärr inte i projektet nu, så jag får återkomma när jag ser hur det faktiskt ser ut. Glömde feedback. Det visade sig att det förmodligen berodde på att jag joinade mot två tabeller samtidigt. Efter att ha gjort om den inre biten till en "Stored Query" (eller "View" som det heter enligt standarden... suck), så var det inga som helst problem att joina.Join på flera villkor Access
Inget större problem, men en grej krånglar.
Om jag förenklar det lite kan vi säga att vi har två tabeller, A, B
C är kopplad till A och B, typ:
A: ID, ID_X, ID_Y, namn
B: ID, ID_X, ID_Y, namn
Jag vill nu helt enkelt joina dem mot varandra och ha ut A.ID, B.ID, A.namn och B.namn, där ID_X och ID_Y ska joinas mot varandra. Vad jag försöker är:
SELECT *
FROM A LEFT JOIN B
ON A.ID_X = B.ID_X AND A.ID_Y = B.ID_Y
Men hur jag än vrider och vänder på jävelskapet så funkar det inte, och hjälpen är inget vidare, den föreslår:
"Du kan också länka flera ON-satser i ett JOIN-uttryck, med följande syntax:
SELECT fält
FROM tabell1 INNER JOIN tabell2
ON tabell1.fält1 operator tabell2.fält1 AND
ON tabell1.fält2 operator tabell2.fält2) OR
ON tabell1.fält3 operator tabell2.fält3)];"
Öh... jag tycker väl att syntaxen ser liite skum ut...
Någon som vet hur man gör för att joina på mer än ett uttryck?Sv: Join på flera villkor Access
Förstår inte riktigt hur dina tabellerna hänger ihop ?
fem tabeller två tabeller ? A, B
C hänger ihop med A,B ? Hur då ?
PÅSv:Join på flera villkor Access
Principen är att jag har joinat ihop 4 tabeller, med lite aggregat och grejer. Som resultat kan vi kalla det för A.
Tabell A är unikt identifierad av ID_X och ID_Y. Både ID_X och ID_Y finns för varje rad.
ID_X är mättillfälle, ID_Y är kategori.
Sen har jag för varje kombination ID_X och ID_Y en viss egenskap, det råkar vara en toleransnivå, detta ligger i tabell B (som naturligt är unikt identifierad av ID_X och ID_Y). Alltså, har man mätt en viss egenskap vid ett visst mättillfälle så har man en viss toleransnivå.
Varje ID_x-ID_Y-kombination finns inte i B, man måste inte ange toleransnivå vid varje givet tillfälle.
Jag vill bara joina denna lite större tabell A med tabell B.
Första tanken är
A LEFT JOIN B ON (A.ID_X = B.ID_X AND A.ID_Y = B.ID_Y)
Och det ska väl gå enligt SQL92-standarden? Hur som helst så funkar det inte i Access, som jag råkar använda i det här fallet.
A:
ID_X ID_Y Value ... (övriga kolumner ointressanta)
1 1 0.5
1 2 0.75
1 3 0.3
2 1 0.6
2 2 0.8
2 3 0.4
B:
ID_X ID_Y Tolerance
1 1 0.1
1 3 0.05
2 1 0.15
2 2 0.25
Vad jag vill ha:
ID_X ID_Y Tolerance Value
1 1 0.1 0.5
1 2 [NULL] 0.75
1 3 0.05 0.3
2 1 0.15 0.6
2 2 0.25 0.8
2 3 [NULL] 0.4
Alltså: pissenkel join på två villkor, men i Access...Sv: Join på flera villkor Access
SELECT A.ID AS AID, B.ID AS BID, A.Namn AS ANamn, B.Namn AS BNamn
FROM A LEFT JOIN B ON A.ID_X = B.ID_X AND A.ID_Y = B.ID_Y
På vilket sätt "går det inte"?
/JohanSv:Join på flera villkor Access
Naturligtvis borde jag ju faktiskt testat på minsta möjliga först, det var ju lite lätt puckat av mig... =)
Problemet är att jag inte får ihop tabell A till att innehålla på ID_X och ID_Y förrän hela jäkla joinen som skapar A är avklarad...
Det är synd att Access ger så jäkla dåliga felmeddelanden bara, det är ju förmodligen så att jag har något enklare syntaxfel som ställer till det för mig.Sv: Join på flera villkor Access
Alltså, vi har tre ID-nummer, X,Y,Z. Sen har vi tre tabeller. A, B, C.
A har X och Y
B har Y och Z
C har X och Z
SELECT * FROM (A INNER JOIN B ON A.Y = B.Y) LEFT JOIN C ON A.X = C.X AND B.Z = C.Z;
Detta funkar inte.