Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Join på flera villkor Access

Postades av 2007-06-28 14:43:39 - Niklas Jansson, i forum access, Tråden har 5 Kommentarer och lästs av 1531 personer

Sitter med ett meckigt problem. Kör mot Access, och ska göra en fetjoin på en fem tabeller.
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?


Svara

Sv: Join på flera villkor Access

Postades av 2007-06-28 15:55:06 - Peter Agren

Hej

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Å


Svara

Sv:Join på flera villkor Access

Postades av 2007-06-28 17:16:44 - Niklas Jansson

Mmm, det är svårt att beskriva detta, eftersom det från början är ett helt gäng tabeller. Glöm C.

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...


Svara

Sv: Join på flera villkor Access

Postades av 2007-06-29 07:53:55 - Johan Djupmarker

Jag gissar på att du gjort något annat fel, följande fungerar fint för mig:

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"?

/Johan


Svara

Sv:Join på flera villkor Access

Postades av 2007-06-29 10:45:48 - Niklas Jansson

"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.

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.


Svara

Sv: Join på flera villkor Access

Postades av 2007-07-05 15:28:38 - Niklas Jansson

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.

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.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 766
27 960
271 761
479
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies