27. september 2006 - 16:28Der er
4 kommentarer og 2 løsninger
SQL udtræk fra flere tabeller
Hej,
Jeg har et brugersystem, der indeholder flere grupper. Dvs. at brugere fra gruppe A ikke kan se brugere fra gruppe B.
Når man er logget ind kan man få vist en oversigt over brugere: $hent_users = mysql_query("SELECT id, nick WHERE gruppe='$_SESSION[gruppe]' ORDER BY nick ASC");
OVenstående bliver trukket ud fra tabellen users, der består af felterne: id, nick og gruppe.
Der findes dog også nogle admins der tilhører mere end en gruppe.
I tabellen users står de som alle andre brugere id | nick | gruppe 4 | Peter | A
Derudover står de også i en anden tabel (kaldet admin) for at vise, at de er med i en anden gruppe: id | gruppe 4 | C
Så Peter er både med i gruppe A og C.
Hvordan kan jeg gøre, så han bliver trukket ud når gruppe="A" || gruppe="C" ?
Jeg ville nok lave lidt om i dit database design. Fjerne gruppe fra users tabellen og slette tabellen admin, og så oprette en tabel der holder styr på grupper, med flg.: felter id, userid, gruppe.
Så du får: users: id | nick 1 | kaj 2 | bo
gruppe: id | userid | gruppe 1 | 1 | A 2 | 1 | C 3 | 2 | A
Enig, og så kan dit udtræk måske være noget i stil med: SELECT users.id, users.navn FROM users, gruppe WHERE gruppe.gruppe = '".$_SESSION['gruppe']."' AND users.id = gruppe.userid
Et tip til fremtidig projekter. Når du arbejder med relations database er hovedreglen at du ikke må have samme data stående flere steder (flere tabeller).Dette er der flere grunde til. 1) Det fylder ekstra 2) hver gang du aendre denne data skal du huske at aendre den alle de steder den forkommer 3) Er du rigtig uheldig kan et andet sql kald snige sig ind imellem dine 2 to kald du normalt ville bruge til at opdatere to tabeller med.
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.