webForumDet fria alternativet

Hur fungerar Join?

ASP

5 svar · 281 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

Jag har två tabeler i en Access-databas och skulle vilja loopa ut dom tillsammans.

Tabel Anv
AnvNamn
AnvDatum

Tabel AnvIP
AnvIPID
AnvNamn
AnvIPnummer

Det jag vill göra är att under varje "loop" skriva ut innehållet i tabelen Anv och sedan kollar om det finns minst ett fält i AnvNamn i tabelen AnvIP som innehåller samma text som i tabelen Anv.
Om det finns mer så ska endast det nyaste tas fram via AnvIPID (räknare).

Har sökt och hittat join, som verkar vara det jag är ute efter. Men hur ska SQL-frågan se ut?

Medlem sedan maj 2002560 inlägg
#2
sql = "select * from Anv, AnvIp where Anv.AnvNamn = AnvIp.AnvNamn"

kanske?

Medlem sedan feb. 200112 078 inlägg
#3

1. Jag skulle råda dig till att inte använda kolumnen som innehåller användarens namn som den kolumn som refererar till din relationstabell. Det är bättre om du använder ett ID, då blir inte databasen inkorrekt om en användare byter namn.
2. Varför har du en egen tabell för IP? Enda egentliga anledningen för detta är ju ifall en användare har mer än ett IP-nummer. Om det inte är så, alltså att varje användare inte kan ha mer än ett IP-nummer, så rekommenderar jag att du skapar en kolumn som heter t.ex. IPnr i tabellen Anv och tar bort den andra tabellen då den är helt onödig.

Medlem sedan sep. 20011 722 inlägg
#4

1: Sant

2: Den andra tabellen innheåller förutom IP adressen även vilken tid användaren loggade in. Eftersom jag vill kunna se lite statistik vilka användare som är aktivast så använder jag en separat tabell för detta.

Medlem sedan feb. 200112 078 inlägg
#5

KoTTeN skrev:

2: Den andra tabellen innheåller förutom IP adressen även vilken tid användaren loggade in. Eftersom jag vill kunna se lite statistik vilka användare som är aktivast så använder jag en separat tabell för detta.

Men saken är den, att om du inte behöver mer än en rad per användare, så är din andra relationstabell helt onödig. Du kan fortfarande dra den data du vill från tabellen Anv utan problem.

Du kan ju skapa inte bara en, utan även två nya kolumner i tabellen Anv, så har du löst ditt problem. Då slipper du även använda JOIN eller ett WHERE-statement, som kräver en del prestanda om du drar stora mängder som t.ex. statistik.

Medlem sedan sep. 20011 722 inlägg
#6

Ja det har du faktiskt rätt i. Fast att dom är separata används till fördel av en annan funktion. Men jag ska fundera och överväga det hela. Tack för hjälpen och insikten. :)

510 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
383 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)