Avatar billede sth Novice
18. december 2003 - 23:19 Der er 8 kommentarer og
1 løsning

lidt hjælp med LEFT JOIN

Jeg er ved at lave en side ( i asp) hvor man kan oprette nogle grupper af bruger.
jeg har 2 tabeller, den ene hvor i alle brugeren er opretet(TblUsers), og den anden hvor der så viser hvilke brugere der er i hvilke grupper(user_groups).

nu vil jeg så gerne lave en liste over alle brugere der ikke er i gruppe 1 (user_groups.user_group=1 )

jeg kan godt lave  en LEFT JOIN der viser alle bruger der ikke er i tabellen user_groups, men ikke hvis det også er et krav at user_groups.user_group=1
mine tabeller er:


CREATE TABLE `tblusers` (
  `id_on_user` int(6) NOT NULL auto_increment,
  `UserID` varchar(20) default NULL,
  `Navn` varchar(50) default NULL,
    PRIMARY KEY  (`id_on_user`)
) TYPE=MyISAM;

CREATE TABLE `user_groups` (
  `group_id` int(6) NOT NULL auto_increment,
  `id_on_user` char(20) default NULL,
  `user_group` int(10) unsigned default NULL,
  PRIMARY KEY  (`group_id`)
) TYPE=MyISAM;


den LEFT JOIN jeg ikke kan få til at virke er :
SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user  WHERE user_groups.id_on_user IS NULL and user_groups.user_group=1

hvor i mod denne
SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user  WHERE user_groups.id_on_user IS NULL

viser alle der ikke er opretet i tabellen user_groups

nogen der kan hjælpe ?
Avatar billede arne_v Ekspert
18. december 2003 - 23:25 #1
Prøv med:

SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user  WHERE user_groups.id_on_user IS NULL and (user_groups.user_group=1 OR user_groups.user_group IS NULL)
Avatar billede eagleeye Praktikant
18. december 2003 - 23:26 #2
Du behøver ikke havde alt det med IS NULL med:

SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user  WHERE user_groups.user_group=1
Avatar billede eagleeye Praktikant
18. december 2003 - 23:28 #3
Behøver = skal. id_on_user =Null og user_group = 1. Der er ikke nogle brugere som har Null som deres user ID. Så derfor finder den ikke nogle i gruppe 1.
Avatar billede arne_v Ekspert
18. december 2003 - 23:31 #4
SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user WHERE user_groups.user_group<>1 OR user_groups.user_group IS NULL
Avatar billede sth Novice
18. december 2003 - 23:34 #5
arne_v:
virker næsten men hvis brugere er oprettet i user_groups.user_group=2
så kommer han ikke med selv om han ikke er op rettet som user_groups.user_group=1

eagleeye:
Viser så kun den bruger der er oprettet i user_groups.user_group
og hvis brugere er oprettet i user_groups.user_group=2 så vises der slet ingen
Avatar billede sth Novice
18. december 2003 - 23:36 #6
Arne_V:
Så virker der:
SELECT TblUsers.* FROM TblUsers  LEFT JOIN user_groups ON TblUsers.id_on_user=user_groups.id_on_user WHERE user_groups.user_group<>1 OR user_groups.user_group IS NULL

smid et svar :-)
Avatar billede arne_v Ekspert
18. december 2003 - 23:37 #7
svar
Avatar billede eagleeye Praktikant
18. december 2003 - 23:38 #8
hov ja der står jo _ikke_ i gruppe 1 det vist ved at være senge tid så ;)
Avatar billede sth Novice
18. december 2003 - 23:49 #9
eagleeye
helt ok, jeg skal også i seng

arne_v
Tak for hjælpen
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