[ASP] Vast bij meerdere loops

Pagina: 1
Acties:

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik ben bezig met een pagina waarbij de user links krijgt van het administratiemenu, welke bij zijn groep horen. Nu zit ik vast met een aantal loops.

De gebruiker logt in, en ik vraag zijn username op via
code:
1
username = Request.Servervariables("AUTH_USER")


Daarna vraag ik zijn groepsnummers op (zie code hieronder & welke er dus meer groepen kunnen zijn). Waarna deze groepsnummers vergelijken moeten worden in een andere tabel, welke weer de ID's bevat van de links die de gebruiker moet krijgen.

Nu krijg ik dus 4x alle info die ik maar 1x nodig heb. En ik heb geen idee hoe ik dit aan kan passen. Het zijn veel tabellen, maar de vorige persoon die dit geschreven heeft had geen normalisatie in z'n achterhoofd. En het is meer werk om alles te veranderen dan dit goed te krijgen. Heeft iemand enig idee hoe ik dit goed kan loopen? Liefst dmv een array, wat ik niet voor elkaar kreeg, het boek 'snel leren werken met asp' was hier niet bepaald uitgebreid op ingegaan. Na dit script moeten de gegevens nog uit 1 tabel gehaald worden namelijk, het omzetten van de Link ID's naar de URL en naam van de link. Al zou ik deze wel kunnen integreren met de 'main_groepen_links' tabel. Liefst niet natuurlijk.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sql = "SELECT DISTINCTROW groups.Groep  FROM users INNER JOIN groups ON users.[User ID] = groups.[User ID]  WHERE (((users.Gebruikersnaam)='" & username & "'))   "
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3

rs.movefirst
do while not rs.eof

sql1 = "SELECT [main_groepen_links].[link ID] FROM [main_groepen_links] INNER JOIN [_groepen] ON [main_groepen_links].[groep ID] = [_groepen].[id]"
    Set rs1 = Server.CreateObject("ADODB.Recordset")
    rs1.Open sql1, conn, 3, 3
    
    rs1.movefirst
    do while not rs1.eof

'hier komt dus 4x hetzelfde, omdat de gebruiker ook 4x in een groep zit.
response.write rs1("link id")
response.write "<br>"
    
    rs1.movenext
    loop
    
rs.movenext
loop

HelmChat.eu - Free Motorcycle Group Chats


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

DISTINCT

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

ja, als je steeds 4 exact dezelfde records achter elkaar uit die query krijgt zou ik "distinctrow" gebruiken of group by ofzo.. :?

  • Elect
  • Registratie: Mei 2000
  • Niet online
In ieder geval bedankt voor de reacties alvast.

Uit m'n hoofd stond bij dat disctinct stond voor enkel de unieke rows. Nu is de SQL query met disctinct direct uit het security.asp gekomen, dus is gekopieerd. Die distinct heb ik laten staan.

Maar wat heeft distinct voor verder nut, ik heb het weggehaald en toegevoegd in beide query's, maar beiden hadden geen effect?

HelmChat.eu - Free Motorcycle Group Chats


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

Als je 4x dezelfde output hebt, kan je dit met distinct voorkomen, dit 'eist' namelijk dat alleen de unieke records teruggegeven worden (wat jouw probleem dus was)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

maar het dus kennelijk niet "is", want anders had je het met distinct kunnen oplossen... Dus die 4 records die volgens jou hetzelfde zijn, zijn dus niet _EXACT_ hetzelfde...

[ Voor 6% gewijzigd door Verwijderd op 26-11-2003 17:14 ]


  • Elect
  • Registratie: Mei 2000
  • Niet online
Het DISTINCTROW commando is goed, hij pakt ook enkel de unieke records.
Alleen de loop gaat eerst de groep af, en haalt dan de links van de groep eruit.

Stel nu dat de gebruiker in 4 groepen zit, en elke groep 2 links heeft. (2x dezelfde links). Dit komt voor. Dan heb je dus in totaal 8 links, waarvan er 6 dubbel zijn. Niet in de database, maar wel in de loop.

Hoe krijg ik nu de loop zover, dat hij controleert of de link al bestaat, en zo ja, dat hij deze overslaat.

HelmChat.eu - Free Motorcycle Group Chats

Pagina: 1