par
VaN » 15 avr. 2010, 17:28
Bonjour,
voici la structure des 2 tables pour la requête qui me pose problème :
CREATE TABLE IF NOT EXISTS `postes` (
`poste_id` int(11) NOT NULL AUTO_INCREMENT,
`poste_user_id` int(11) NOT NULL,
`poste_je_id` int(11) NOT NULL,
`poste_debut` date NOT NULL,
`poste_fin` date NOT NULL,
`poste_statut` tinyint(1) NOT NULL,
PRIMARY KEY (`poste_id`),
KEY `poste_user_id` (`poste_user_id`),
KEY `poste_je_id` (`poste_je_id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=765 ;
CREATE TABLE IF NOT EXISTS `users` (
`user_id` mediumint(9) NOT NULL AUTO_INCREMENT,
`user_mail` varchar(100) DEFAULT NULL,
`user_prenom` varchar(50) DEFAULT NULL,
`user_nom` varchar(50) DEFAULT NULL,
`user_mobile` varchar(20) DEFAULT NULL,
`user_statut` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=794 ;
Je souhaite récupérer l'ensemble des users qui ne possèdent que des postes révolus ( donc poste_fin < CURDATE() ), pour un poste_je_id donné.
Voici ma requête actuelle :
"SELECT user_id, user_prenom, user_nom, user_mobile, user_mail, user_statut FROM users, postes
WHERE poste_user_id = user_id AND poste_fin < CURDATE() AND poste_fin != '0000-00-00' AND poste_je_id = '1' GROUP BY user_id"
Sauf que là, ca va me récupérer tous les utilisateurs qui ont au moins 1 poste révolu, pas les utilisateurs dont TOUS les postes sont révolus.
Comment puis-je faire pour que ma requête englobent tous les postes de chaque utilisateurs ?
Bonjour,
voici la structure des 2 tables pour la requête qui me pose problème :
[sql]CREATE TABLE IF NOT EXISTS `postes` (
`poste_id` int(11) NOT NULL AUTO_INCREMENT,
`poste_user_id` int(11) NOT NULL,
`poste_je_id` int(11) NOT NULL,
`poste_debut` date NOT NULL,
`poste_fin` date NOT NULL,
`poste_statut` tinyint(1) NOT NULL,
PRIMARY KEY (`poste_id`),
KEY `poste_user_id` (`poste_user_id`),
KEY `poste_je_id` (`poste_je_id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=765 ;
CREATE TABLE IF NOT EXISTS `users` (
`user_id` mediumint(9) NOT NULL AUTO_INCREMENT,
`user_mail` varchar(100) DEFAULT NULL,
`user_prenom` varchar(50) DEFAULT NULL,
`user_nom` varchar(50) DEFAULT NULL,
`user_mobile` varchar(20) DEFAULT NULL,
`user_statut` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=794 ;
[/sql]
Je souhaite récupérer l'ensemble des users qui ne possèdent que des postes révolus ( donc poste_fin < CURDATE() ), pour un poste_je_id donné.
Voici ma requête actuelle :
[php]"SELECT user_id, user_prenom, user_nom, user_mobile, user_mail, user_statut FROM users, postes
WHERE poste_user_id = user_id AND poste_fin < CURDATE() AND poste_fin != '0000-00-00' AND poste_je_id = '1' GROUP BY user_id"[/php]
Sauf que là, ca va me récupérer tous les utilisateurs qui ont au moins 1 poste révolu, pas les utilisateurs dont TOUS les postes sont révolus.
Comment puis-je faire pour que ma requête englobent tous les postes de chaque utilisateurs ?