Une requete pour compter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Une requete pour compter

Une requete pour compter

par agité » 22 avr. 2008, 10:04

Bonjour,

Je cherche a faire une requete sur ma base qui consiste a compter le nombre de produits vendus par tout les vendeurs des commerciaux d'un gestionnaire.

En fait c'est un principe en pyramide, les vendeurs sont reliés a un commercial et plusieurs commerciaux a un gestionnaire.

Quand je veux faire une requete je dois trouver tout ce qui est vendu ma table est constituée comme tel :

Code : Tout sélectionner

CREATE TABLE `user` ( `Id` int(11) NOT NULL auto_increment, `Civilite` enum('Société','Mr','Mme','Mlle') collate utf8_unicode_ci NOT NULL default 'Mr', `Nom` varchar(50) collate utf8_unicode_ci NOT NULL, `Prenom` varchar(50) collate utf8_unicode_ci NOT NULL, `Identifiant` varchar(20) collate utf8_unicode_ci NOT NULL, `motdepasse` blob NOT NULL, `Observations` text collate utf8_unicode_ci NOT NULL, `Id_user_profil` int(10) NOT NULL, `Id_superieur` int(5) default NULL, `Majoration` varchar(2) collate utf8_unicode_ci default NULL, PRIMARY KEY (`Id`), KEY `rang` (`Id_user_profil`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=61 ;
et ma table pour les produits est constitué de

Code : Tout sélectionner

CREATE TABLE `cat_prod_id` ( `Id_cat_prod` int(11) NOT NULL, `Id_cat` int(11) NOT NULL, `Id_cat_prod_genre` int(10) NOT NULL, `Id_cat_prod_etat` text collate utf8_unicode_ci NOT NULL, `Id_user` int(11) NOT NULL, `Id_online` int(1) NOT NULL default '0', PRIMARY KEY (`Id_cat_prod`), KEY `id_programme` (`Id_cat`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
bref le Id_user de ma table produit est lié a la table utilisateur par une requete :
SELECT COUNT(*) As NbSup1 FROM cat_prod_id INNER JOIN user ON (cat_prod_id.Id_user = user.Id) WHERE Id_cat_prod_etat = '".$Lot_Etat."' AND user.Id_superieur = '".$Utilisateur_Id."' AND Id_online = '2' 
ca me retourne bien le nombre de produits vendus pour les commerciaux de ce gestionnaires.

Par contre je voudrais connaitre tout les produits vendus de tout les vendeurs des commerciaux relié a ce gestionnaire.

et je ne vois pas comment faire ...



EDIT j'ai fais la fonction suivante :
// Compter les lots pour le tableau de bord
function Compter_Lots($Lot_Etat,$Utilisateur_Id)
{
	// Pour l'administrateur
	if($_SESSION['Rank'] == 0)
	{
		$Req_Nb_Lot = mysql_query("SELECT COUNT(*) As NbLotTotal FROM cat_prod_id WHERE Id_cat_prod_etat = '".$Lot_Etat."' AND Id_online = '2' ");
		$Count_Nb_Lot = mysql_fetch_array($Req_Nb_Lot);
		
		return $Count_Nb_Lot['NbLotTotal'];
	}	
	// Pour les gestionnaire 
	elseif($_SESSION['Rank'] == 1)
	{ 
		
		// Compter tout les lots de ses gestionnaires
		$Req_Nb_Lot = mysql_query("SELECT COUNT(*) As NbSup1 FROM cat_prod_id INNER JOIN user ON cat_prod_id.Id_user = user.Id) WHERE Id_cat_prod_etat = '".$Lot_Etat."' AND  Id_superieur = '".$Utilisateur_Id."' AND user.Id = Id_user AND Id_online = '2' ");
		$Count_Nb_Lot = mysql_fetch_array($Req_Nb_Lot);
				
		//Compter le total des Superieurs et Inferieurs
		return $Count_Nb_Lot['NbSup1'];
		
	}
	// Pour les commerciaux
	elseif($_SESSION['Rank'] == 2)
	{
		// Compter tout les lots du commercial et de ces apporteurs
		$Req_Nb_Lot = mysql_query("SELECT COUNT(*) As NbSup2 FROM cat_prod_id INNER JOIN user ON (cat_prod_id.Id_user = user.Id) WHERE Id_cat_prod_etat = '".$Lot_Etat."' AND ( Id_superieur = '".$Utilisateur_Id."' OR cat_prod_id.Id_user = '".$Utilisateur_Id."' ) AND Id_online = '2' ");
		$Count_Nb_Lot = mysql_fetch_array($Req_Nb_Lot);
		
		// Compter le nombre de lots total	
		return $Count_Nb_Lot['NbSup2'];
	}
}
cette fonction me retourne bien pour l'administrateur et les commerciaux le nombre de reponse que je veux mais pour les gestionnaires je me retrouve simplement ave le nombre de produits vendus par ses commerciaux.

Je ne vois pas comment ajouter dans ma requete la liaison entre l'id du commercial comme Id_superieur et les Id des vendeurs qui lui sont liés.

Une idée ?