Vraag & Antwoord
[ASP] Meerdere tabellen
8 antwoorden
- Ik heb een MySQL tabel kader en een tabel teams.
In de tabel kader staan trainergegevens en bij welk team ze horen. In de tabel teams staan de gegevens van de teams (hoe kan het he).
Door te klikken op een link wordt een team gekozen. Er wordt dus een SELECT gemaakt op beide tabellen op de teamnaam. Met een LOOP worden de trainers van het geselecteerde team netjes onder elkaar getoond in een <TABLE>. Werkt perfect.
Daarna moet eenmalig de klasse van een team worden weergegeven uit de tabel teams. En daar gaat het fout. Wie weet raad ?
Ik hoop dat ik het zo voldoende duidelijk omschreven heb. - zou je misschien de code die je nu gebruikt kunnen posten en hoe je database eruit ziet?
- Dit is de code, weet alleen niet waar ik het gedeelte van de teamklasse moet laten
set objRS=objConnection.execute("SELECT NAWkader.Functie, NAWkader.Voornaam, NAWkader.Tussenvoegsel, NAWkader.Achternaam, NAWkader.Telefoon, NAWkader.Mobiel, NAWkader.Email, teams.team, teams.klasse, teams.knvbnajaar, teams.knvbvoorjaar, teams.fotolink, teams.alttekstfoto, teams.sitelink FROM NAWkader, teams WHERE NAWkader.TeamNU = '"& strTeam &"' ORDER BY NAWkader.groep1, NAWkader.groep2, NAWkader.groep3 "
While Not objRS.EOF
Response.Write "<tr><td><b>" & objRS.Fields("Functie"& "</b></td><td>" & objRS.Fields("Voornaam"
& " " & objRS.Fields("Tussenvoegsel"
& " " & objRS.Fields("Achternaam"
& "</td><td>" & objRS.Fields("Telefoon"
& "<br>" & objRS.Fields("Mobiel"
& "</td><td><a href='mailto:" & objRS.Fields("Email"
& "'>" &"mail" & "</a></td></tr>"
objRS.MoveNext
Wend
Response.Write objRS.Fields("klasse"
objRS.Close
Set objRS=Nothing
objConnection.Close
Set objConnection=Nothing
%> - doe een GROUP BY classe in je query
edit: we waren tegelijk aan het posten
ik zie dat je hem al output. je kan het ook bewaren in een variable en na de loop die variabele uitlezen. - Ik ben nog niet zo goed in ASP, hoe zet ik de waarde in een variabele en hoe lees ik die dan uit ? En vooral, waar lees ik die dan uit.
- Dit is één van de mogelijkheden. Een beetje suf om bij elke loop de klasse opnieuw te 'zetten', de waarde wijzigt immers niet, maar dat ga je in performance niet merken.
[code:1:79254d71af]
Dim klasse
While Not objRS.EOF
klasse = objRS.Fields("klasse")
Response.Write "<tr><td><b>" & objRS.Fields("Functie") & "</b></td><td>" & objRS.Fields("Voornaam") & " " & objRS.Fields("Tussenvoegsel") & " " & objRS.Fields("Achternaam") & "</td><td>" & objRS.Fields("Telefoon") & "<br>" & objRS.Fields("Mobiel") & "</td><td><a href='mailto:" & objRS.Fields("Email") & "'>" &"mail" & "</a></td></tr>"
objRS.MoveNext
Wend
Response.Write klasse
[/code:1:79254d71af]
Tip: een snellere manier om in je ADO recordset een value op te halen is via de Collect method. - Dank voor jullie snelle antwoorden.
Ik heb e.e.a. aangepast zoals door jullie vermeld.
Code ziet er nu zo uit:
<%
set objRS=objConnection.execute("SELECT NAWkader.Functie, NAWkader.Voornaam, NAWkader.Tussenvoegsel, NAWkader.Achternaam, NAWkader.Telefoon, NAWkader.Mobiel, NAWkader.Email, teams.team, teams.klasse, teams.knvbnajaar, teams.knvbvoorjaar, teams.fotolink, teams.alttekstfoto, teams.sitelink FROM NAWkader, teams WHERE NAWkader.TeamNU = '"& strTeam &"' ORDER BY NAWkader.groep1, NAWkader.groep2, NAWkader.groep3 "
While Not objRS.EOF
klasse = objRS.Fields("klasse"
Response.Write "<tr><td><b>" & objRS.Fields("Functie"& "</b></td><td>" & objRS.Fields("Voornaam"
& " " & objRS.Fields("Tussenvoegsel"
& " " & objRS.Fields("Achternaam"
& "</td><td>" & objRS.Fields("Telefoon"
& "<br>" & objRS.Fields("Mobiel"
& "</td><td><a href='mailto:" & objRS.Fields("Email"
& "'>" &"mail" & "</a></td></tr>"
objRS.MoveNext
Wend
Response.Write klasse
objRS.Close
Set objRS=Nothing
objConnection.Close
Set objConnection=Nothing
%>
Ik krijg nu de klasse bovenaan te staan en de gegevens van de trainers eronder, maar dan elke trainer 2x, dus als volgt:
2e klasse K
Trainer Jan
Trainer Jan
Leider Piet
Leider Piet
Vreemd, ik zou toch verwachten dat eerst de While Wend wordt afgewerkt en dan de klasse pas wordt getoond. Het is nu net andersom.
Bovendien krijg ik de klassegegevens van de eerste record in de tabel te zien, terwijl dat een andere record zou moeten zijn. - De reden dat je de trainers meerdere keren ziet, is dat je een join uitvoert tussen twee tabellen [b:b697296390]zonder[/b:b697296390] daarbij aan te geven waarop je de relatie legt. Je krijgt dan een cartesisch product van de twee tabellen.
Een voorbeeldje van een join waarbij die relatie wel wordt gelegd:
Beantwoord deze vraag
Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.
Gerelateerde vragen
- URL zonder extensie wil niet helemaal lukken
- https verbinding met ssl in owncloud
- afspelen met audacity werkt niet goed
- Computer!Totaal-forum maakt plaats voor v&a-module
- computer start soms niet op
- Pro show gold 4 overgangen tussen tekstdia's
- wie kan mij meer vertellen over een Gigabyte GA-B85M-HD3
- Windows Tijdelijke bestanden