je possède deux tables, USERS et CONCOURS. Dans la table CONCOURS, j'enregistre entre autre le user_id de la personne qui a proposé le concours à la base de données.
Je souhaite ensuite afficher la liste de mes USERS, avec leur login, mail, etc, et également le nombre de concours qu'ils ont proposés. Le problème est que ma requête, telle qu'elle est conçue, ne me sort que les USERS qui ont proposés des concours, pas les autres.
La requête en question :
$sql = "SELECT user_id, user_login, user_level, user_mail, COUNT(concours_id) as concours
FROM ".$prefixe."users, ".$prefixe."concours
WHERE concours_user_id = user_id
GROUP BY user_id";
les structures des tables USERS et CONCOURS :CREATE TABLE `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_login` text character set latin1 collate latin1_general_cs NOT NULL,
`user_pass` text character set latin1 collate latin1_general_cs NOT NULL,
`user_mail` text NOT NULL,
`user_level` tinyint(4) NOT NULL,
`user_activated` tinyint(4) NOT NULL,
`user_activation_key` text character set latin1 collate latin1_general_cs NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
CREATE TABLE `concours` (
`concours_id` int(11) NOT NULL auto_increment,
`concours_user_id` int(11) NOT NULL,
`concours_site_id` int(11) NOT NULL,
`concours_url` text NOT NULL,
`concours_start_date` datetime NOT NULL,
`concours_end_date` datetime NOT NULL,
`concours_type` tinyint(4) NOT NULL,
`concours_qs` enum('Oui','Non') NOT NULL,
`concours_nb_reponses` tinyint(4) NOT NULL,
`concours_reponses` text NOT NULL,
`concours_lots` text NOT NULL,
`concours_comments` text NOT NULL,
`concours_rating` tinyint(4) NOT NULL,
`concours_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`concours_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
Existe-il un moyen de sortir également les USERS n'ayant pas proposé de concours, en une seule requête, ou dois-je faire 2 requêtes disctinctes, une pour sortir tous les USERS, et une autre pour compter le nombre de concours proposés ?