par
Invité » 15 juin 2009, 13:13
Bonjour à tous,
J'ai une table qui contient un liste d'OPERATIONS, et une autre table qui contient des CODES.
Pour chaque opération, il y a plusieurs codes.
Chaque enregistrement CODES contient un champ idOperation qui reprend l'id de l'opération concernée, afin de faire la liaison.
Voici les tables:
Code : Tout sélectionner
CREATE TABLE `operations` (
`id` int(10) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL,
`nomFichier` varchar(255) NOT NULL,
`dateCrea` datetime NOT NULL,
`dateExpi` datetime NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
CREATE TABLE `codes` (
`id` int(10) NOT NULL auto_increment,
`code` varchar(255) NOT NULL,
`nbDwldAuto` int(10) NOT NULL,
`nbDwldRea` int(10) NOT NULL,
`idOperation` int(10) NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Je peux lister toutes les opérations en faisant ceci:
Ma question: comment faire pour ajouter aux résultats, le nombre de codes pour chaque opération?
J'ai tenté ceci:
Code : Tout sélectionner
SELECT ao.*, COUNT(ac.id) AS nbCodesDispo FROM operations AS ao, codes AS ac WHERE ac.idOperation = ao.id GROUP BY ac.id
Pas d'erreur, mais les résultats ne sont pas bons. J'ai une multitude de lignes pour les opérations, au lieu de quelques unes.
Voyez vous comment je devrais construire la requête?
Merci pour vos réponses.
Bonjour à tous,
J'ai une table qui contient un liste d'OPERATIONS, et une autre table qui contient des CODES.
Pour chaque opération, il y a plusieurs codes.
Chaque enregistrement CODES contient un champ idOperation qui reprend l'id de l'opération concernée, afin de faire la liaison.
Voici les tables:
[code]
CREATE TABLE `operations` (
`id` int(10) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL,
`nomFichier` varchar(255) NOT NULL,
`dateCrea` datetime NOT NULL,
`dateExpi` datetime NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
CREATE TABLE `codes` (
`id` int(10) NOT NULL auto_increment,
`code` varchar(255) NOT NULL,
`nbDwldAuto` int(10) NOT NULL,
`nbDwldRea` int(10) NOT NULL,
`idOperation` int(10) NOT NULL,
`published` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
[/code]
Je peux lister toutes les opérations en faisant ceci:
[code]
SELECT * FROM operations
[/code]
Ma question: comment faire pour ajouter aux résultats, le nombre de codes pour chaque opération?
J'ai tenté ceci:
[code]
SELECT ao.*, COUNT(ac.id) AS nbCodesDispo FROM operations AS ao, codes AS ac WHERE ac.idOperation = ao.id GROUP BY ac.id[/code]
Pas d'erreur, mais les résultats ne sont pas bons. J'ai une multitude de lignes pour les opérations, au lieu de quelques unes.
Voyez vous comment je devrais construire la requête?
Merci pour vos réponses.