webForumDet fria alternativet

Loop utan två connections

ASP

3 svar · 281 visningar · startad av Janspeed

Medlem sedan jan. 2001510 inlägg
Frågan#1

Har en accessdatabas med en massa information om användare.

Om samma användare har två poster i tabellen så ska dessa loopas ut.

Nu är det dock så att om ett fält i posten är = ja så betyder det att den raden även har information i en annan tabell i form av en eller flera poster. Det betyder att den informationen också borde loopas ut.

Jag funderade på att lösa det med en Join men skulle det i så fall verka som om användaren har fler än 2 poster.

Det andra alternativet var om jag skulle göra en helt ny connection och loopa genom men det känns väl väldigt prestandakrävande?

Jag är inte så insatt i det här med relationer och relationsdatabaser. Finns det något smart sätt att lösa detta på? Antingen i ASP:n eller i SQL:en?

Några förslag?

Medlem sedan juni 200032 967 inlägg
#2

Jag funderade på att lösa det med en Join men skulle det i så fall verka som om användaren har fler än 2 poster.

Nej, så borde det inte verka.

Det du skulle vilja göra är en outer join mot tabellen som har data om ett fält har värdet 'ja'. Dvs: det ska gå alldeles utmärkt att lösa med en SQL-fråga.

Mer än ett connectionobjekt behöver du aldrig. Möjligen mer än ett recordsetobjekt, men recordset != connection.

Mvh,

Medlem sedan jan. 2001510 inlägg
#3

Ok låt se om jag förstått detta rätt.

För att slå ihop posterna gör jag en outer join men Hur ser recordsetet ut då?

låt säga att jag har två tabeller typ:

tblAnvändare

Post;användare;lösen;plats;smurfID;E_en_smurf
1;farbror blå;smurf;smurfbyn;10;ja
2;farbror blå;smurf;tomteskogen;11;nej

tblSmurferfarenhet
smurfID;position;Smurfmedaljer
10;1;320
10;2;150

Tidigare så har jag loopat ut dessa med

Select * From tblAnvändare

Do Until rs.EOF

Response.Write "Du finns i: " & rs("Plats") & "<br>"

Loop

Nu vill jag även lägga till hur många medaljer denne har typ:

Do Until rs.EOF

Response.Write "Du finns i: " & rs("Plats") & "<br>"

Do until nånting

Response.Write "Du har på position " & rs("position") & ": " & rs("smurfmedaljer") & " smurfmedaljer"

Loop

Loop

Men det funkar väl inte om jag gör en outer join? eller?

Medlem sedan juni 200032 967 inlägg
#4

Om du gör en outer join blir det som om de två recordseten läggs bredvid varandra. Du får minst en post per användare i tblAnvändare. Finns inget i den andra tabellen blir de fälten null, och finns där motsvarande poster får du en post i det resulterande recordsetet per post som uppfyller joinvillkoret i högertabellen.

Det blir alltså ett litet annat sätt att loopa ut din data på, men borde inte bli så mycket svårare.

Mvh,

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)