10. august 2005 - 22:00Der er
6 kommentarer og 1 løsning
SQL Join
Hej Eksperter
Jeg troede lige jeg havde fået styr på joins, men nej :o(
Jeg har 3 tabeller [Users], [Users_Access], [Page_Access]
[Users] indeholder brugere med: id, username og password
[Users_Access] indeholder: id, user_id og group_id Tabellen viser hvilke brugere der er med i hvilke grupper...
[Page_Access] indeholder: id, page_id og group_id Den viser hvilke sider der må få besøg af hvilke grupper
Jeg har i min url et page_id, som afgør hvilken side brugeren befinder sig på. nogle af siderne kræver et login. Når brugeren forsøger at logge ind på en given side, skal den tjekke hvilke grupper (group_id) der har adgang til siden. Derefter om brugeren er med i en af de bestemte grupper.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg har ikke så meget tjek på joins :o( Men du kan gøre det sådan her --- grupper der har adgang sql = "Select group_id From PageAccess Where page_id = " & request.querystring("id") brugere som har adgang sql1 = "Select user_id From Users_Access Where grop_id In "&sql brugernavne og passwords som har adgang sql2 = "Select * From Users Where id In " &sql1
der var lidt stavefejl, men dem håber jeg du kan se :o) Det er så kun den sidste du skal køre Hvis du har fx brugernavnet gemt i en session som du tjekker på så burde du kunne gøre sådan her --- Set rs = conn.execute("Select Count(*) From "&sql2&" Where username = '"&session("navn")&"'") if rs(0) > 0 then //så er der adgang else //så er der ikke adgang end if -- Ps det er muligt det er nemmere med en join, men ovenståend burde også være muligt med kun en execute
strSQL = "SELECT Count(pa.id) AS cntAcc " & _ "FROM Page_Access AS pa " & _ "INNER JOIN User_Access AS ua ON pa.group_id = ua.group_id " & _ "WHERE ua.user_id = " & Session("userid")
Skulle gerne finde antallet af brugere med brugerid'et fra session("userid") (skulle gerne være 0 eller 1), der har adgang til den pågældende side. Du kan kontrollere om brugeren har adgang således:
if rs("cntAcc") = 1 then ' bruger har adgang else ' bruger har ikke adgang end if
Aaaarh, det kan da godt være du lige skal udvide den where-clause så din SQL ser ud som følger (ellers får du jo en række pr. side som brugeren har adgang til):
strSQL = "SELECT Count(pa.id) AS cntAcc " & _ "FROM Page_Access AS pa " & _ "INNER JOIN User_Access AS ua ON pa.group_id = ua.group_id " & _ "WHERE ua.user_id = " & session.contents("userid") & _ " AND pa.id = " & request.querystring("page_id")
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.