MySQL (NOT) IN auf Feld anweden ?

MrSpoocy

Grünschnabel
Hi,

Ich habe eine Simple DB-Strucktur.

PHP:
CREATE TABLE IF NOT EXISTS `m_msg` (
  `num` smallint(3) unsigned NOT NULL auto_increment,
  `msg` varchar(255) NOT NULL,
  PRIMARY KEY  (`num`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `m_msg_log` (
  `userid` int(3) unsigned NOT NULL,
  `msgList` varchar(255) NOT NULL,
  PRIMARY KEY  (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `m_user` (
  `id` int(3) unsigned NOT NULL auto_increment,
  `name` varchar(24) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

INSERT INTO `m_msg` (`num`, `msg`) VALUES (1, 'Hallo, Nachricht 1'), (2, 'Hallo, Nachricht 2');
INSERT INTO `m_msg_log` (`userid`, `msgList`) VALUES (1, '1'),(2, '2'),(3, '1,2');
INSERT INTO `m_user` (`id`, `name`) VALUES (1, 'Test A'), (2, 'Test B'), (3, 'Test C'), (4, 'Test D'), (5, 'Test E'),(6, 'Test F');

Nun wollte ich eine abfrage machen welche user alles noch die nachricht X bekommen sollen.

SELECT T1.id,T1.name,T2.msgList FROM m_user AS T1
LEFT JOIN m_msg_log AS T2 ON T2.userid=T1.id
WHERE IFNULL(2 NOT IN (T2.msgList),1)
ORDER BY T1.id


Die 2 bei IFNULL(2 NOT IN (T2.msgList),1) ist nee Variable die übergeben wird. Normaler weise soll er prüfen ob 2 in 2,1 .. 1 ... 2 ist.
Nehme ich anstelle von 2 mal die 1 so werden die user richtiger weise weggelassen die 1 oder 1, zu stehen haben.
Jedoch sobald ich eine zahl auschließen will die nach dem 1, kommt geht es nicht mehr.
Irgendwie behandelt er msgList nicht als "liste". Einer nee idee was falsch sein könnte ?
 
HI,

könnten in Deiner Liste evtl. NULL werte drinnen stehen?

Ach ich sehe gerade, nein da stehen ja werte drinnen...

Also in einem Feld in der Spalte msgList , steht aber der Wert "1,2" den kann er nicht finden, glaube ich, da das ja ein String ist.
Du möchtest also alle Felder weglassen in denen in der Spalte T2.msgList eine "2" steht, ja ?



Grüße
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück