Bon j'explique la difficulté.

J'ai trois tables de base [global_messages] et [global_messages_read] et [users].

J'essaie ici d'obtenir les informations de global_messages dans certains critères, en somme quand le message global n'est pas lu. Pour ce faire j'ai pensé utilisé un système simple, pour chaque message flaggué comme lu, j'insère dans global_messages_read l'id de l'article et l'id de l'utilisateur.

Ainsi si la ligne n'est pas présente dans global_messages_read alors théoriquement on peut considérer que l'utilisateur n'a pas lu le message. Néanmoins j'ai un mal fou à créer la requête pour ça.

La structure ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
CREATE TABLE `global_messages` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(60) character set latin1 NOT NULL,
  `content` text character set latin1 NOT NULL,
  `creation_date` int(11) NOT NULL,
  `options` text character set latin1 NOT NULL,
  `deleted` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `deleted` (`deleted`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `global_messages`
--
 
INSERT INTO `global_messages` (`id`, `title`, `content`, `creation_date`, `options`, `deleted`) VALUES
(1, 'title', 'content jjj', 1215548156, '', 0),
(2, 'annonce 2', ' ouverture !!!', 1215548492, '', 0);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `global_messages_read`
--
 
CREATE TABLE `global_messages_read` (
  `id` bigint(20) NOT NULL auto_increment,
  `user_id` bigint(20) NOT NULL,
  `global_message_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
 
--
-- Contenu de la table `global_messages_read`
--
 
INSERT INTO `global_messages_read` (`id`, `user_id`, `global_message_id`) VALUES
(1, 1, 1),
(2, 2, 1),
(4, 1, 2);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `users`
--
 
CREATE TABLE `users` (
  `id` bigint(11) NOT NULL auto_increment,
  `username` varchar(100) character set latin1 NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `username` (`username`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
 
--
-- Contenu de la table `users`
--
 
INSERT INTO `users` (`id`, `username`) VALUES
(1, 'chasseurdetoile'),
(2, 'fili'),