Page 1 sur 1

Requete sur plusieur critere dans une seul critere ?

Posté : 05 août 2008, 15:19
par guigui69
Bonjour à tous,

Je voudrait savoir s'il est possible d'avoir une requête sql qui pourrait me ressortir le nombre de champ en question.

Code : Tout sélectionner

-- phpMyAdmin SQL Dump -- version 2.9.1.1-Debian-2ubuntu1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mardi 05 Août 2008 à 14:36 -- Version du serveur: 5.0.38 -- Version de PHP: 5.2.1 -- -- Base de données: `qualite` -- -- -------------------------------------------------------- -- -- Structure de la table `critere` -- CREATE TABLE `critere` ( `id_critere` int(11) NOT NULL auto_increment, `nom_critere` varchar(32) NOT NULL, PRIMARY KEY (`id_critere`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; -- -- Contenu de la table `critere` -- INSERT INTO `critere` (`id_critere`, `nom_critere`) VALUES (1, 'Commercial'), (2, 'Télévente'), (3, 'Quantité'), (4, 'Qualité'), (5, 'Logistique'), (6, 'Casse');
En faite je voudrait le nombre de réclamation qui sont pour chaque critère.
Comment je doit construire ma requête pour réaliser ma demande? ( pour éviter d'avoir à indiquer chaque critère)

Code : Tout sélectionner

SELECT count( id_reclamation ) as reclamation, ????????? FROM reclamation WHERE MONTH( date_reclamation ) = '$mois' AND YEAR( date_reclamation ) = '$annee';";
Merci

guigui69

Posté : 05 août 2008, 15:28
par Nagol
tu peux éventuellement arriver à une écriture en une seule requête en utilisant des as sur les tables

Code : Tout sélectionner

SELECT count( t1.id_reclamation ) as reclamationt1, count( t2.id_reclamation ) as reclamationt2 FROM reclamation as t1, reclamation as t2 WHERE MONTH( t1.date_reclamation ) = '$mois' AND YEAR( t1.date_reclamation ) = '$annee' AND MONTH( t2.date_reclamation ) = '$mois' AND YEAR( t2.date_reclamation ) = '$annee';
L'idée est assez laide mais bon c'est ce qui est m'est venu à l'esprit en premier, peut-être que ca taidera.

Posté : 05 août 2008, 15:52
par guigui69
D'accord mais ca pas l'air de te plaire, c'est pas autorisé de faire ceci ?

guigui69

Posté : 05 août 2008, 18:07
par Nagol
j'en suis pas très sur effectivement, ma proposition irait plutot dans le sens de faire plusieurs requêtes mais je ne suis pas un grand utilisateur de base de donnée, je ne saurais pas te dire quelle est la meilleure solution entre faire "n" requête rapide et une grosse requête, quand j'en parle je pense aussi à une autre solution qui peut être à étudier et qui serait beaucoup plus élégante: faire une vue.

Posté : 06 août 2008, 12:08
par ouckileou
Je comprends pas bien ta requête Nagol.

Déjà on a pas eu la structure de la table "réclamations", et je comprends pas pourquoi tu fais une jointure sur elle-même.

Si c'est pour compter le nombre de réclamations par critères, je serais parti sur quelquechose genre :

Code : Tout sélectionner

SELECT c.nom_critere, COUNT(*) AS nb_reclamations FROM reclamations r INNER JOIN critere c ON r.id_critere = c.id_critere GROUP BY c.nom_critere

Posté : 07 août 2008, 20:09
par Nagol
Je comprends pas bien ta requête Nagol.
c'est ce qui arrive quand je tente d'aider malgrès mes lacunes :)

Posté : 10 août 2008, 10:30
par mojorisin
Bonjour,
je partirais presque comme oukileou mais en partant de critere avec une jointure gauche sur reclamation pour avoir les également les criteres qui n'ont aucune réclamation.