Avatar billede chaser64 Nybegynder
10. august 2005 - 22:00 Der 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.

Er I med??

Puhaa - ja, jeg har brug for hjælp :o)

På forhånd tak...
Avatar billede busschou Praktikant
10. august 2005 - 22:05 #1
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
Avatar billede busschou Praktikant
10. august 2005 - 22:10 #2
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
Avatar billede softspot Forsker
10. august 2005 - 22:17 #3
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
Avatar billede softspot Forsker
11. august 2005 - 11:18 #4
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")
Avatar billede chaser64 Nybegynder
05. september 2005 - 12:59 #5
yes - den er der - svar :o)
Avatar billede softspot Forsker
05. september 2005 - 13:02 #6
Hvis det var mig du mente :)
Avatar billede softspot Forsker
26. september 2005 - 11:45 #7
Mange tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester