Avatar billede trp79 Nybegynder
06. november 2004 - 18:59 Der er 7 kommentarer og
1 løsning

Problemer med udformning af where clausul

Hejsa
Jeg har en tabel med brugernavne og roller i. En bruger kan have flere roller. Hvordan kan jeg så lave en where clausul, hvor jeg hiver alle de brugere ud, som fx ikke har rollen admin?

hvis man nu fx har følgende oplysninger i tabellen:
brugernavn    rolle
arne          user
arne          manager
system        user
system        manager
system        admin

et udtræk heri skal altså kun resulterer i arne.

På forhånd tak, mvh
Torben
Avatar billede arne_v Ekspert
06. november 2004 - 19:03 #1
MySQL version >= 4.1:

SELECT brugernavn FROM tabel WHERE brugernavn NOT IN (SELECT brugernavn FROM tabel WHERE rolle='admin')
Avatar billede arne_v Ekspert
06. november 2004 - 19:06 #2
Måske:

SELECT t1.brugerbavn
FROM tabel t1 LEFT JOIN tabel t2 ON t1.brugernavn=t2.brugernavn AND t2.rolle='admin'
WHERE t2.brugernavn IS NULL
Avatar billede majkat Nybegynder
06. november 2004 - 19:22 #3
19:06 er den der skal bruges - den er altid optimal (19:03 kræver at optimizeren er i stand til at gennemskue hvad du har gang i...)
Avatar billede trp79 Nybegynder
06. november 2004 - 19:24 #4
Jeg opdaterer til en ny MySQL version - det er nu generelt rart at have mulighed for at lave subqueries.

Tak for hjælpen Arne - smid du bare et svar :)
Avatar billede trp79 Nybegynder
06. november 2004 - 19:28 #5
Kan du uddybe det lidt mere majkat?

Til orientering, så virker Arnes 06/11-2004 19:06:07 kommentar glimrende:
SELECT t1.username
FROM tomcat_roles t1 LEFT JOIN tomcat_roles t2 ON t1.username=t2.username AND t2.role='admin'
WHERE t2.username IS NULL
Avatar billede arne_v Ekspert
06. november 2004 - 19:41 #6
svar
Avatar billede arne_v Ekspert
06. november 2004 - 19:44 #7
Jeg har ikke testet. Men umiddelbart kan jeg ikke se hvorfor ikke
den subquery kunne optimeres mindst lige så godt som den anden
konstruktion. Det skal godt nok være en halvfum optimizer hvis
den ikke udnytter at subqueryen er konstant.
Avatar billede trp79 Nybegynder
06. november 2004 - 20:00 #8
Okidoki. Tak for det Arne.

Mvh
Torben
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
Computerworld tilbyder specialiserede kurser i database-management

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