par
VaN » 05 févr. 2008, 15:38
Bonjour,
J'aimerai afficher un tableau d'utilisateurs, dans lequel je compte le nombre de concours et de réponses qu'ils ont proposé.
Voici la structure de ces 3 tables :
Code : Tout sélectionner
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,
`user_logged` tinyint(4) NOT NULL,
`user_last_session` datetime NOT NULL,
`user_points` int(11) NOT NULL,
`user_parrain_id` int(11) NOT NULL,
`user_concours_done` text NOT NULL,
`user_scoot_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;
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_rating` tinyint(4) NOT NULL,
`concours_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`concours_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE `reponses` (
`reponse_id` int(11) NOT NULL auto_increment,
`reponse_concours_id` int(11) NOT NULL,
`reponse_user_id` int(11) NOT NULL,
`reponse_text` text NOT NULL,
`reponse_valid` tinyint(4) NOT NULL,
PRIMARY KEY (`reponse_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
Et voici ma requete. Elle fonctionnait bien pour compter le nombre de concours, mais maintenant que je viens de rajouter la table REPONSES dans le JOIN et l'equivalence d'ID avec un nouveau ON, cela ne marche plus. Ma synthaxe n'est pas bonne ?
$sql = "SELECT user_id, user_login, user_level, user_mail, user_points, COUNT(concours_id) as concoursProposes, COUNT(reponse_id) as reponsesProposees
FROM ".$prefixe."users
LEFT JOIN ".$prefixe."concours, ".prefixe."reponses ON user_id = concours_user_id AND user_id = reponse_user_id
GROUP BY user_id";
Bonjour,
J'aimerai afficher un tableau d'utilisateurs, dans lequel je compte le nombre de concours et de réponses qu'ils ont proposé.
Voici la structure de ces 3 tables :
[code]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,
`user_logged` tinyint(4) NOT NULL,
`user_last_session` datetime NOT NULL,
`user_points` int(11) NOT NULL,
`user_parrain_id` int(11) NOT NULL,
`user_concours_done` text NOT NULL,
`user_scoot_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;
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_rating` tinyint(4) NOT NULL,
`concours_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`concours_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE `reponses` (
`reponse_id` int(11) NOT NULL auto_increment,
`reponse_concours_id` int(11) NOT NULL,
`reponse_user_id` int(11) NOT NULL,
`reponse_text` text NOT NULL,
`reponse_valid` tinyint(4) NOT NULL,
PRIMARY KEY (`reponse_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;[/code]
Et voici ma requete. Elle fonctionnait bien pour compter le nombre de concours, mais maintenant que je viens de rajouter la table REPONSES dans le JOIN et l'equivalence d'ID avec un nouveau ON, cela ne marche plus. Ma synthaxe n'est pas bonne ?
[php]$sql = "SELECT user_id, user_login, user_level, user_mail, user_points, COUNT(concours_id) as concoursProposes, COUNT(reponse_id) as reponsesProposees
FROM ".$prefixe."users
LEFT JOIN ".$prefixe."concours, ".prefixe."reponses ON user_id = concours_user_id AND user_id = reponse_user_id
GROUP BY user_id";[/php]