Kære udviklere,
Vi har et projekt på skolen hvor vi skal lave en "Danseskole"'s hjemmeside. Jeg er kommet til et punkt der er problemer med. Det omhandler at der findes nogle forskellige hold, i forskellige "Stilarter" (hip-hop, disco mm.) og ved hold udskrivningen skal jeg så tjekke på om man er tilmeldt dette hold. Her er der problemer.
Jeg har disse tabeller
bruger
---------------
brugerId
brugerNavn
brugerPass
FK_rolleId
brugerFornavn
brugerEfternavn
brugerEmail
brugerstyre
---------------
brugerstyreId
FK_brugerId
FK_holdId
alder
---------------
alderId
alderNiveau
hold
---------------
holdId
holdNavn
FK_stilartId
FK_alderId
FK_niveauId
holdPris
niveau
---------------
niveauId
niveauType
stilart
---------------
stilartId
stilartNavn
stilartBilledesti
tilmelding
---------------
tilmeldingId
FK_holdId
FK_Bruger
tilmeldingActive
I de forskellige tabeller har jeg noget forskelligt data:
alder -
bruger -
brugerstyre -
hold -
niveau -
stilart -
tilmeldingHele oversigten over tabellerneI "hold"-tabellen kan I se at der findes to resultater under Stilart med ID 1. Dem vil jeg gerne have udskrevet. Og når jeg eksempelvis er logget ind som "test" har jeg et brugerId som hedder 6. Ved det hold-udtræk hvor brugerId er 6 vil jeg gerne have gjort "tegn" på at jeg allerede er tilmeldt det hold (ved tilmeldings-knappen).
Med den nuværende SQL ser resultatet således ud:
ResultatDer er allerede to fejl dér. Den skal kun udskrive holdId 4 én gang. Og den tager ikke det andet hold med hvor stilartId er lig med 1.
Min nuværende SQL:
- SELECT *, stilart.stilartId AS Expr1
- FROM brugerstyre
- INNER JOIN bruger ON brugerstyre.FK_brugerId = bruger.brugerId
- INNER JOIN hold ON brugerstyre.FK_holdId = hold.holdId
- INNER JOIN alder ON hold.FK_alderId = alder.alderId
- INNER JOIN niveau ON hold.FK_niveauId = niveau.niveauId
- INNER JOIN rolle ON bruger.FK_rolleId = rolle.rolleId
- INNER JOIN stilart ON hold.FK_stilartId = stilart.stilartId
- INNER JOIN tilmelding ON tilmelding.FK_holdId = hold.holdId
- WHERE (stilart.stilartId = '" + id + "')
"id"-variablen er det ID som står i url-adressen.
Grunden til at den kun smider resultatet ud hvor min bruger (6) er tilmeldt er fordi at jeg bruger
INNER JOIN tilmelding ON tilmelding.FK_holdId = hold.holdId. Der ville jeg bruge en LEFT JOIN, men så kommer der fejl i min .aspx fil da jeg har skrevet:
- <a href="./Tilmeld.aspx?holdId=<%# Eval("holdId").ToString() %>" class="button-big-pages tilmeld">
- Tilmeld<%# (int?)Eval("FK_Bruger") != null ? ((int?)Eval("FK_Bruger") == (int?)Session["BrugerId"] ? " --" : "") : ""%>
- </a>
Er der nogle der kan hjælpe? Er nemlig helt i tvivl.
Indlæg senest redigeret d. 19.09.2012 10:49 af Bruger #16025