Avatar billede Slettet bruger
17. januar 2012 - 13:53 Der er 1 løsning

Udtræk DISTINCT fra flere tabeller (vil jeg tro)

Jeg har en række artikler, hvortil det er angivet, om en artikel kun er relevant for en enkelt brugergruppe. Jeg har tre tabeller;

1. artikler:
artikel_id (autonum) | artikel_navn

2. brugerroller
rolle_id (autonum) | rolle_navn

3. kontekst
kontekst_id (autonum) | kontekst_artikel_id | kontekst_rolle_id

Man kan altså forestille sig, at eks. artiklen "PHP for begyndere" (med artikel_id 3) er relevant for eks. "Studerende"  (rolle_id 4) og "Undervisere" (rolle_id 5), men IKKE relevant for eks. "Forelæsere" (rolle_id 7)


Det ser ud som flg. i fht. ovenstående:

1. artikler:
3 | PHP for begyndere

2. brugerroller
4 | Studerende
5 | Undervisere
7 | Forelæsere

3. kontekst (her er kontekst_id bare sat til 12 og 13)
12 | 3 | 4
13 | 3 | 5

Så langt så godt. Hvis jeg nu vil rette i indstillingerne for "PHP for begyndere"-artiklen, vil jeg gerne lave et udtræk over ALLE brugerrollerne, men kun afkrydse dem der er valgt via checkbox'e (her "Studerende"  (rolle_id 4) og "Undervisere" (rolle_id 5)).

Min SQL ser ud som:

$sql_roles = mysql_query("SELECT * FROM artikler,brugerroller,kontekst WHERE artikel_id = kontekst_artikel_id AND kontekst_rolle_id = rolle_id ORDER BY rolle_navn asc");

Problemet er, at den lister rollerne flere gange (hvis de også er brugt ved en anden artikel). Så hvordan skal det se ud, hvis jeg vil liste ALLE rollerne og afkrydse de valgte?

Håber det giver mening :-D
Avatar billede Slettet bruger
04. juli 2012 - 08:41 #1
Lukker
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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