mboost-dp1

Access SQL


Gå til bund
Gravatar #1 - Dreadnought
27. okt. 2009 13:00
Jeg er ved at dokumentere en Access database og er stødt på en query som jeg ikke helt forstår.
Et udsnit fra den query:
FROM
(StkFordelingsTabel INNER JOIN LinjeSpec ON [StkFordelingsTabel].LinjeNr=LinjeSpec.LinjeNr)
INNER JOIN linjenoegletal ON ([StkFordelingsTabel].linjenr=linjenoegletal.linjenr)
AND (clng(format([StkFordelingsTabel].Dato,"yyyyww"))=linjenoegletal.aaruge)

Er det tilladt at joine de samme to tabeller to steder og vil det gøre noget gavn?
Gravatar #2 - Dreadnought
27. okt. 2009 13:09
Access har ingen problemer med at vise datasheet med ovenstående FROM sektion, men i designview brokker den sig over at den ikke kan vise det der er fremhævet med fed skrift.
Gravatar #3 - Windcape
27. okt. 2009 15:05
virker som om der er en tastefejl med en parentes ?


FROM
(StkFordelingsTabel
INNER JOIN
LinjeSpec
ON [StkFordelingsTabel].LinjeNr = LinjeSpec.LinjeNr
)
INNER JOIN
linjenoegletal
ON [StkFordelingsTabel].linjenr = linjenoegletal.linjenr
AND
clng(
format(
[StkFordelingsTabel].Dato, "yyyyww"
)
) = linjenoegletal.aaruge


Burde det ikke være:


FROM
StkFordelingsTabel

INNER JOIN
LinjeSpec
ON
[StkFordelingsTabel].LinjeNr = LinjeSpec.LinjeNr

INNER JOIN
linjenoegletal
ON
[StkFordelingsTabel].linjenr = linjenoegletal.linjenr

AND
clng(format([StkFordelingsTabel].Dato, "yyyyww")) = linjenoegletal.aaruge


Hvilket altså så vidt jeg kan se joiner følgende 3 tabeller:

StkFordelingsTabel, LinjeSpec og linjenoegletal


Gravatar #4 - Dreadnought
27. okt. 2009 16:00
Ja, parantesen rundt om den første JOIN er nok unødvendig, men der er nok Access der er glad for dem. Ophavskvinden af databasen har for det meste brugt design view til at generere koden, og jeg kan se at alle queries med mere end en JOIN har parantes rundt om de forreste JOINs.

Men jeg har søgt mig frem til at ON sektionen er i orden, men jeg kan stadig ikke se hvad det gavner.
Gravatar #5 - illishar
27. okt. 2009 16:08
#1 Der ikke noget i vejen for at at joine via flere kolonner. Eg. hvis din primære nøgle består af flere kolonner. Og man kan også godt joine en tabel med sig selv.
Gravatar #6 - illishar
27. okt. 2009 16:15
Her er noget pseudo kode for hvad jeg læser:

Læs fra:

(StkFordelingsTabel join LinjeSpec) join linjenoegletal

(Den ene ON er unødvendig.)

Altså Læs linjenoegletal fra de respektive StkFordeling der har et linienr.


Rettelse: Den ene ON burde være unødvendig, men det kommer an på data.
Gravatar #7 - illishar
27. okt. 2009 16:21
Jeg prøver igen:

Læs: År/Uge subset fra StkFordeling, der har LinjeSpec og linjenoegletal
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login