Avatar billede clausvintherlarsen Nybegynder
05. oktober 2005 - 01:10 Der er 5 kommentarer og
1 løsning

Udvælge poster som ikke har en 'makker' i anden tabel

Jeg har to tabeller.

CREATE TABLE `eqdkp_members` (
  `member_id` smallint(5) unsigned NOT NULL auto_increment,
  `member_name` varchar(30) NOT NULL default '',
  `member_earned` float(11,2) NOT NULL default '0.00',
  `member_spent` float(11,2) NOT NULL default '0.00',
  `member_adjustment` float(11,2) NOT NULL default '0.00',
  `member_status` enum('0','1') NOT NULL default '1',
  `member_firstraid` int(11) NOT NULL default '0',
  `member_lastraid` int(11) NOT NULL default '0',
  `member_raidcount` int(11) NOT NULL default '0',
  `member_level` tinyint(2) NOT NULL default '60',
  `member_race_id` smallint(3) unsigned NOT NULL default '0',
  `member_class_id` smallint(3) unsigned NOT NULL default '0',
  `member_rank_id` smallint(3) NOT NULL default '0',
  PRIMARY KEY  (`member_id`),
  UNIQUE KEY `member_name` (`member_name`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;



CREATE TABLE `phpbb_users` (
  `user_id` mediumint(8) NOT NULL default '0',
  `user_active` tinyint(1) default '1',
  `username` varchar(25) NOT NULL default '',
  `user_password` varchar(32) NOT NULL default '',
  `user_session_time` int(11) NOT NULL default '0',
  `user_session_page` smallint(5) NOT NULL default '0',
  `user_lastvisit` int(11) NOT NULL default '0',
  `user_regdate` int(11) NOT NULL default '0',
  `user_level` tinyint(4) default '0',
  `user_posts` mediumint(8) unsigned NOT NULL default '0',
  `user_timezone` decimal(5,2) NOT NULL default '0.00',
  `user_style` tinyint(4) default NULL,
  `user_lang` varchar(255) default NULL,
  `user_dateformat` varchar(14) NOT NULL default 'd M Y H:i',
  `user_new_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_unread_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_last_privmsg` int(11) NOT NULL default '0',
  `user_emailtime` int(11) default NULL,
  `user_viewemail` tinyint(1) default NULL,
  `user_attachsig` tinyint(1) default NULL,
  `user_allowhtml` tinyint(1) default '1',
  `user_allowbbcode` tinyint(1) default '1',
  `user_allowsmile` tinyint(1) default '1',
  `user_allowavatar` tinyint(1) NOT NULL default '1',
  `user_allow_pm` tinyint(1) NOT NULL default '1',
  `user_allow_viewonline` tinyint(1) NOT NULL default '1',
  `user_notify` tinyint(1) NOT NULL default '1',
  `user_notify_pm` tinyint(1) NOT NULL default '0',
  `user_popup_pm` tinyint(1) NOT NULL default '0',
  `user_rank` int(11) default '0',
  `user_avatar` varchar(100) default NULL,
  `user_avatar_type` tinyint(4) NOT NULL default '0',
  `user_email` varchar(255) default NULL,
  `user_icq` varchar(15) default NULL,
  `user_website` varchar(100) default NULL,
  `user_from` varchar(100) default NULL,
  `user_sig` text,
  `user_sig_bbcode_uid` varchar(10) default NULL,
  `user_aim` varchar(255) default NULL,
  `user_yim` varchar(255) default NULL,
  `user_msnm` varchar(255) default NULL,
  `user_occ` varchar(100) default NULL,
  `user_interests` varchar(255) default NULL,
  `user_actkey` varchar(32) default NULL,
  `user_newpasswd` varchar(32) default NULL,
  PRIMARY KEY  (`user_id`),
  KEY `user_session_time` (`user_session_time`)
) TYPE=MyISAM;



Alle brugere er listet i tabelen phpbb_users, men ikke alle er listen i eqdkp_members.

Jeg vil derfor gerne have en liste over samtlige brugere som står listet i phpbb_users men som ikke er listet i eqdkp_members.

Feltet member_name i eqdkp_members skal sammenlignes med feltet username i phpbb_users.
Avatar billede arne_v Ekspert
05. oktober 2005 - 08:21 #1
nyere MySQL:

SELECT * FROM  phpbb_users WHERE username NOT IN (SELECT member_name FROM eqdkp_members)
Avatar billede arne_v Ekspert
05. oktober 2005 - 08:23 #2
ældre MySQL:

SELECT * FROM  phpbb_users LEFT JOIN eqdkp_members ON phpbb_users.username = eqdkp_members.member_name AND eqdkp_members.member_name IS NULL
Avatar billede clausvintherlarsen Nybegynder
05. oktober 2005 - 12:42 #3
Jeg kører med en ældre MySQL Database, den første sætning virker ikke.

Den anden giver derimod resultat, blot det forkerte resultat.

Den lister samtlige brugere!

$NewUserQuery = mysql_query("SELECT * FROM  phpbb_users LEFT JOIN eqdkp_members ON phpbb_users.username = eqdkp_members.member_name AND eqdkp_members.member_name IS NULL"); er min sætning...

Tror på du kan dit kram, men et eller andet er gået galt... (Måske mig der har forklaret mig dårligt)
Avatar billede arne_v Ekspert
05. oktober 2005 - 12:45 #4
hov - den AND skal være en WHERE

SELECT * FROM  phpbb_users LEFT JOIN eqdkp_members ON phpbb_users.username = eqdkp_members.member_name WHERE eqdkp_members.member_name IS NULL
Avatar billede clausvintherlarsen Nybegynder
05. oktober 2005 - 13:06 #5
MEGET bedre ;)

Tænkte godt der manglede WHERE et sted, men ville ikke forsøge mig ;)

Tusind tak for hjælpen. Hvis du lavet et svar skal du få point ;)
Avatar billede arne_v Ekspert
05. oktober 2005 - 13:10 #6
kommer her
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