Avatar billede Mik2000 Professor
28. juli 2016 - 14:06 Der er 3 kommentarer og
1 løsning

Hent fra database på tværs af tabeller

Hej

Jeg har et problem

Jeg har et brugerbaseret sted hvor vi kan dele filer

Jeg har en brugertabel
BRUGER
b_id
b_bruger
b_password

En brugergruppe tabel med de grupper man er medlem af
BRUGERGRUPPE
bg_id
bg_navn

En rum tabel (de "rum" med filer man har adgang til)
RUM
r_id
r_navn

Så har jeg nogle tabel der forbinder dem, da hver bruger kan være medlem af mange grupper og adgangen til rum kan tildeles til mange grupper

BRUGER_GRUPPE_CONNECTION
bgc_id
bgc_bruger_id
bgc_brugergruppe_id

GRUPPE_RUM_CONNECTION
grc_id
grc_brugergruppe_id
grc_rum_id

Nu kommer så problemet
Jeg har et bruger id, og vil gerne have vist de rum som brugeren har adgang til. Dvs. jeg skal tjekke hvilke brugergrupper brugeren er med i, og derefter hvilke rum brugergruppen har adgang til.

Hvordan gør jeg nemmest det?

Lige nu er jeg ud i at hente brugergrupper, derefter hente rum de har adgang til tilsammen, derefter merge resultatet så der ikke er dobbelt, og til sidst kører en forspørgsel pr. rum id - men det virker i mit hoved forkert.

Så er der en der er god til SQL som kan hjælpe med en nemmer måde?
Avatar billede arne_v Ekspert
28. juli 2016 - 15:17 #1
JOIN
Avatar billede erikjacobsen Ekspert
28. juli 2016 - 15:17 #2
Ikke testet - men det er jo oplagt at bruge join mellem tabellerne. Du skal lige anføre et rigtigt bruger id til allersidst

SELECT RUM.r_navn FROM BRUGER
    JOIN BRUGER_GRUPPE_CONNECTION ON BRUGER.b_id=BRUGER_GRUPPE_CONNECTION.bgc_bruger_id
    JOIN GRUPPE_RUM_CONNECTION ON BRUGER_GRUPPE_CONNECTION.bgc_brugergruppe_id=GRUPPE_RUM_CONNECTION.grc_brugergruppe_id
    JOIN RUM ON GRUPPE_RUM_CONNECTION.grc_rum_id=RUM.r_id
    WHERE BRUGER.b_id=117799
Avatar billede arne_v Ekspert
28. juli 2016 - 15:23 #3
Eksempel:

SELECT bg_navn  FROM (bruger JOIN bruger_gruppe_connection ON bruger.b_id=bruger_gruppe_connection.bgc_bruger_id) JOIN brugergruppe ON bruger_gruppe_connection.bgc_brugergruppe_id=brugergruppe.bg_id WHERE bruger.b_bruger=?
Avatar billede Mik2000 Professor
29. juli 2016 - 20:11 #4
Hej. Tak for hjælpen. Det virkede fint
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

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