Avatar billede Kim Neesgaard Seniormester
11. december 2003 - 09:04 Der er 11 kommentarer og
3 løsninger

Access query hvor den ene key er større end den anden

Nedenstående spørgsmål går på, om man kan lave det i en Access query (altså ikke i en SQL for det ved jeg, at man kan):

Jeg har to tabeller der skal joines, men den ene key har fx. foranstillede nuller:

Key1      347
Key2  000347

dvs. 347 etc. stemmer overens i key1 og key2, men key2 har permanent 3 foranstillede nuller.

Umiddelbart kan man ikke trække en joinlinie fra key1 til key2, da de jo ikke matcher, men er der en måde man i queryen kan fortælle (ligesom LEFT i SQL), at de tre nuller skal hugges af, før der joines?
Avatar billede trer Nybegynder
11. december 2003 - 11:19 #1
Du kan konvertere din key2 til et nummerisk felt i din join. Jeg mener der er en access funktion til det ( a la cint() i VB ).
Avatar billede fdata Forsker
11. december 2003 - 18:14 #2
Du kan også lave en "mellem-query", hvor du medtager alle felter plus et ekstra felt, som er værdien af Key2, altså Val(Key2). Så kan du joine på det nye felt.
Avatar billede trer Nybegynder
11. december 2003 - 18:46 #3
Måske bliver du tvunget til at skrive din query i sql fremfor access' query editor - hvis så, så vil syntaksen være ca.

select *
from mytable1 inner join mytable2
on mytable1.key1 = val(mytable2.key2)

(Val -> det er vist det den hedder, Access udgaven af CINT funktionen)
Avatar billede fdata Forsker
11. december 2003 - 20:04 #4
Tja, resultatet vil jo være det samme. Der er ingen problemer med at oprette det direkte i query vinduet. Forskellen ligger vel bare i grafisk visning contra ren SQL  ;o)
Avatar billede fynbohans Nybegynder
28. december 2003 - 00:12 #5
Hvis både key1 og key2 er tekst kan du lave et ekstra felt(key3), som du bruger til din join.
 
ke3:mid(key2;4)
Avatar billede fynbohans Nybegynder
28. december 2003 - 00:13 #6
ke3=key3
Avatar billede Kim Neesgaard Seniormester
28. december 2003 - 10:07 #7
-> fynbohans: Men hvis man (af nemhedshensyn) gerne vil blive i Access´s query vindue, kan man vel ikke det, da det nye felt 'ke3' ikke dukker op i tabelrammerne i queryvinduet?
Avatar billede fynbohans Nybegynder
28. december 2003 - 11:13 #8
I gitteret vil der stå nøjgtigt det du skrevet, nemlig
key3:mid(key2;4). Har du prøvet?
Avatar billede Kim Neesgaard Seniormester
28. december 2003 - 16:49 #9
Ja, men måske gør jeg det forkert! Jeg skriver det nye felt Key3 i linien 'Field' , men kan ikke se det oppe i tabelvinduet?!
Avatar billede fynbohans Nybegynder
28. december 2003 - 16:53 #10
Det kommer ikke i tabelvinduet. Feltet ekstisterer kun i Forespørgslen!
Avatar billede Kim Neesgaard Seniormester
29. december 2003 - 09:43 #11
Nu spørger jeg nok umådelig dumt, men hvordan kan jeg så linke de to, hvis jeg ikke kan trække en linie mellem dem?
Avatar billede fynbohans Nybegynder
29. december 2003 - 21:05 #12
Nej! Det er mig der udtrykt mig uklart og glemt at spørge om en vigtig detalje i dit oprindelige spørgsmål.
Både key1 og key2 skal være af samme type. Da key2 er tekst må key1 også være det og af samme længde. Med 3 decimaler skal 3 derfor være 003.
Hvis key1 er tal skal du bruge funktionen Val, dvs.
key3:Val(key2).
Også det er forspørgslen som indeholder key3, der skal være den ene del af det du joiner.
Avatar billede fdata Forsker
30. december 2003 - 12:43 #13
Blander mig lige igen.
Det er præcis, hvad jeg foreslog 11/12-2003 18:14:07.
Opret en query, hvor du definerer det nye felt, og brug så den query i en ny query, hvor du kan bruge det nye felt til at linke med.
Avatar billede Kim Neesgaard Seniormester
22. september 2004 - 22:34 #14
Forsinket tak for svar - jeg har valgt at bruge mellequeryen, der gør det hele meget overskueligt!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester