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.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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.