Avatar billede lars_hoeberg Praktikant
10. april 2006 - 15:40 Der er 28 kommentarer og
2 løsninger

Flere ralationer fra én tabel

Hejsa.

Jeg sidder med en db, hvori jeg har en tabel med en række med talkoder, og og en række med en værdi i en ny række. Altså f.eks sådan her.

1    1
10    X
1024  F
osv

Jeg har så en tabel hvor jeg har en masse rækker med disse talkoder, i alt 21 rækker. Hvordan laver jeg dette på bedste performance mæssige måde. Jeg har prøvet blot at lave 21 ralationer, men dette tager jo en evighed at "loade". Kan dette ikke laves smartere?

Ved godt det måske ikke er den bedste forklaring, men skriv et indlæg med din mail-adresse, så skal jeg sende db'en til dig, så du kan se det helt nøjagtigt.

Lars
Avatar billede geagleeye Nybegynder
10. april 2006 - 15:43 #1
hvor mange tabeller har du ?
hvordan ser de enkelte tabeller ud ?
hvilke nøgler har du i hver enkelt tabel ?
Avatar billede lars_hoeberg Praktikant
10. april 2006 - 15:49 #2
Jeg har 2 tabeller.
Én med 2 rækker. "Talkode" og "Værdi"
Én med 21 rækker, som hedder [slag1], [Slag2] osv., som altså er med talkoderne
Her skal jeg have en forespørgsel, som omdanner disse talkoder til "Værdi"-feltet
Avatar billede terry Ekspert
10. april 2006 - 17:37 #3
eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede terry Ekspert
11. april 2006 - 09:52 #4
Hope you could use the info given
Avatar billede fynbohans Nybegynder
13. april 2006 - 00:22 #5
Må vi andre ikke godt blive indviet i hvad det hele går ud?
Hvor er kolonnerne?
Avatar billede terry Ekspert
13. april 2006 - 09:51 #6
table Talkoder
Talkode Number (Primary key)
Resultat Text

table RESULTAT
PK Autonumber
id number
salg1 Number (foreign key relationships with Talkoder.Talkode)
salg2 Number (foreign key relationships with Talkoder.Talkode)
salg3 Number (foreign key relationships with Talkoder.Talkode)
.
.
.
salg21 Number (foreign key relationships with Talkoder.Talkode)
Avatar billede terry Ekspert
13. april 2006 - 09:53 #7
The SQL Lars uses is
SELECT RESULTAT.id, Talkoder.Resultat AS [1-1], Talkoder_1.Resultat AS [1-2], Talkoder_2.Resultat AS [2-1], Talkoder_3.Resultat AS [2-2], Talkoder_4.Resultat AS [3-1], Talkoder_5.Resultat AS [3-2], Talkoder_6.Resultat AS [4-1], Talkoder_7.Resultat AS [4-2], Talkoder_8.Resultat AS [5-1], Talkoder_9.Resultat AS [5-2], Talkoder_10.Resultat AS [6-1], Talkoder_11.Resultat AS [6-2], Talkoder_12.Resultat AS [7-1], Talkoder_13.Resultat AS [7-2], Talkoder_14.Resultat AS [8-1], Talkoder_15.Resultat AS [8-2], Talkoder_16.Resultat AS [9-1], Talkoder_17.Resultat AS [9-2], Talkoder_18.Resultat AS [10-1], Talkoder_19.Resultat AS [10-2], Talkoder_20.Resultat AS [10-3]
FROM Talkoder AS Talkoder_20 INNER JOIN (Talkoder AS Talkoder_19 INNER JOIN (Talkoder AS Talkoder_18 INNER JOIN (Talkoder AS Talkoder_17 INNER JOIN (Talkoder AS Talkoder_16 INNER JOIN (Talkoder AS Talkoder_15 INNER JOIN (Talkoder AS Talkoder_14 INNER JOIN (Talkoder AS Talkoder_13 INNER JOIN (Talkoder AS Talkoder_12 INNER JOIN (Talkoder AS Talkoder_11 INNER JOIN (Talkoder AS Talkoder_10 INNER JOIN (Talkoder AS Talkoder_9 INNER JOIN (Talkoder AS Talkoder_8 INNER JOIN (Talkoder AS Talkoder_7 INNER JOIN (Talkoder AS Talkoder_6 INNER JOIN (Talkoder AS Talkoder_5 INNER JOIN (Talkoder AS Talkoder_4 INNER JOIN (Talkoder AS Talkoder_3 INNER JOIN (Talkoder AS Talkoder_2 INNER JOIN (Talkoder AS Talkoder_1 INNER JOIN (Talkoder INNER JOIN RESULTAT ON Talkoder.Talkode = RESULTAT.slag1) ON Talkoder_1.Talkode = RESULTAT.slag2) ON Talkoder_2.Talkode = RESULTAT.slag3) ON Talkoder_3.Talkode = RESULTAT.slag4) ON Talkoder_4.Talkode = RESULTAT.slag5) ON Talkoder_5.Talkode = RESULTAT.slag6) ON Talkoder_6.Talkode = RESULTAT.slag7) ON Talkoder_7.Talkode = RESULTAT.slag8) ON Talkoder_8.Talkode = RESULTAT.slag9) ON Talkoder_9.Talkode = RESULTAT.slag10) ON Talkoder_10.Talkode = RESULTAT.slag11) ON Talkoder_11.Talkode = RESULTAT.slag12) ON Talkoder_12.Talkode = RESULTAT.slag13) ON Talkoder_13.Talkode = RESULTAT.slag14) ON Talkoder_14.Talkode = RESULTAT.slag15) ON Talkoder_15.Talkode = RESULTAT.slag16) ON Talkoder_16.Talkode = RESULTAT.slag17) ON Talkoder_17.Talkode = RESULTAT.slag18) ON Talkoder_18.Talkode = RESULTAT.slag19) ON Talkoder_19.Talkode = RESULTAT.slag20) ON Talkoder_20.Talkode = RESULTAT.slag21;

Which as far as I can see, the only way to do it.
Avatar billede terry Ekspert
13. april 2006 - 09:54 #8
Introducing a third table (many-to-many) would not make things go faster
Avatar billede fynbohans Nybegynder
13. april 2006 - 11:17 #9
Forstår lidt mere nu, men ikke helt. Måske er der en hurtig VBA-løsning.
Må jeg også se basen? Min adresse er: hr_dk@hotmail.com.
Får dog ikke kigget på det før i slutningen af påsken.
Avatar billede lars_hoeberg Praktikant
17. april 2006 - 20:06 #10
Sender db til fynbohans nu
Avatar billede fynbohans Nybegynder
18. april 2006 - 14:53 #11
Har nu set i din base, hvor der foruden en tabel med deltagere
er en tabel med 2 felter, Talkode og Resultat.
Desuden er der en tabel med 21 felter + id-felt(som ikke er et autonummereringsfelt).
Dataene i den sidste tabel ser ud til at være talkoder.
Har også set forespørgslen.

Spørgsmålet er nu: Hvad er det du gerne vil lave.
Skal fx Talkoderne i Resultat-tabellen erstattes med de resultat-data som svarer til
talkoderne i tabellen Talkode/Resultat?
Hvis det er det du vil, så er det let at lave en funktion, som gør det.
Avatar billede terry Ekspert
01. maj 2006 - 22:16 #12
whats the status here Lars?
Avatar billede terry Ekspert
16. maj 2006 - 09:02 #13
status Lars?
Avatar billede lars_hoeberg Praktikant
24. maj 2006 - 13:40 #14
Hej fynbohans. Det er lige præcis det jeg gerne vil. Undskyld mit sene svar
Avatar billede fynbohans Nybegynder
24. maj 2006 - 14:51 #15
Kigger på det i aften eller i morgen. Er på arbejde nu.
Avatar billede lars_hoeberg Praktikant
26. maj 2006 - 14:53 #16
Fået kigget på det?
Avatar billede fynbohans Nybegynder
26. maj 2006 - 15:44 #17
Er på vej!
Avatar billede lars_hoeberg Praktikant
26. maj 2006 - 19:47 #18
Er det til at finde ud af? Hvornår regner du med at have noget klar?
Avatar billede lars_hoeberg Praktikant
29. maj 2006 - 20:56 #19
Status?
Avatar billede lars_hoeberg Praktikant
06. juni 2006 - 22:17 #20
Hvordan ser det ud med db'en? Kan du sende en lille status om hvordan det går?
Avatar billede fynbohans Nybegynder
11. juni 2006 - 21:13 #21
Har desværre haft travlt med et større projekt i min fritid men her er mit svar:

Hvis du i din tabel RESULTAT tilføjer lige så mange felter som der er slag, dvs
res1, res2 osv kan du lave en Opdateringsforespørgsel for alle resultater med følgende
kriterium:
DLookUp("[Resultat]";"Talkoder";"[Talkode] = " & CLng([slag1]))

Beklager forsinkelsen!
Avatar billede fynbohans Nybegynder
12. juni 2006 - 08:19 #22
I kampens hede med mit andet projekt i hovedet kom jeg til at skrive forkert:
Formlen skal naturligvis stå i opdateringslinjen. Ikke som kriterium
Avatar billede terry Ekspert
12. juni 2006 - 08:39 #23
I will be very surprised if a dlookup is going to make things faster, but I may be wrong.
Avatar billede terry Ekspert
12. juni 2006 - 08:44 #24
You could try redesigning yoour dB and maybe havin a third table which I mentioned 13/04-2006 09:54:5. This will reduce the number of JOINS needed (or dlookup) and may also speed things up, but there is no guaranty. In my opinion having a third table is alos the correct way to do things, it allows adding "Rækker" without having to add new fields to the tables.
Avatar billede lars_hoeberg Praktikant
18. juni 2006 - 16:20 #25
Jeg har prøvet at køre den på 1 af felterne, og den er ca 4 minutter om at afvikle bare den ene forespørgsel, så jeg er bange for den heller ikke holder, desværre...
Avatar billede terry Ekspert
18. juni 2006 - 16:40 #26
13/04-2006 09:53:49
"Which as far as I can see, the only way to do it."

Unless you redesign your tables, then you may be lucky
Avatar billede fynbohans Nybegynder
18. juni 2006 - 17:23 #27
Hos mig ta'r det under 1 sekund at køre forespørgslen. Men, men .....
der er noget helt galt med den base jeg fik tilsendt.
Prøvede først at lave en opdateringsformular. Men det var umuligt.
Der dukkede hele tiden et objekt med navnet "2" op, som jeg ikke kunne se nogen steder.
Jeg så også navnet "Viking" i VBA. Det plejer at betyde, at den originale base engang
har haft dette navn.

Kopierede derefter tabellerne til en helt ny base.
Avatar billede terry Ekspert
27. juli 2006 - 13:18 #28
wow, is this question still open? How about closing it Lars
Avatar billede lars_hoeberg Praktikant
25. september 2006 - 21:22 #29
Vi lukker her. Jeg beklager forsinkelsen. I får begge 50 points for jeres forsøg
Avatar billede terry Ekspert
26. september 2006 - 11:16 #30
:o)
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