Bonjour,

je cherche a faire des jointures de table pour arriver a faire le calcule de ce que vendes tout les vendeurs des commerciaux des gestionnaires.

C'est un système en pyramide du type :

vendeur 1 - commercial 1 - gestionnaire 1
vendeur 2

vendeur 3 - commercial 2
vendeur 4

les vendeurs sont reliés aux commerciaux et les commerciaux au gestionnaires.

Je dois compter le nombre de ventes pour tout les vendeurs et commerciaux d'un gestionnaire en ayant l'Id du gestionnaire, je pense qu'en SQL et les jointures de table ca devrait être réalisable.

Ma table des produits est constituée comme ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
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_orient` int(10) NOT NULL,
  `Id_cat_prod_type` int(10) NOT NULL,
  `Id_cat_prod_fisc` int(10) NOT NULL,
  `Id_cat_prod_fisc_id` int(11) default 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',
  `Id_actable` int(1) default NULL,
  PRIMARY KEY  (`Id_cat_prod`),
  KEY `id_programme` (`Id_cat`),
  KEY `id_genre` (`Id_cat_prod_genre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
et ma table des utilisateur est constituée comme ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 ;
J'ai donc fait une fonction pour compter les produits selon un état :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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);
 
		$Count_total = $Count_Nb_Lot['NbLotTotal'];
 
	// Pour les gestionnaire 
	}elseif($_SESSION['Rank'] == 1){ 
 
		// Compter tout les lots de ses gestionnaires
		$Req_Nb_Lot = mysql_query("SELECT user.Id 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' ");
		$Count_Nb_Superieur = mysql_num_rows($Req_Nb_Lot);
 
		$Array_Nb_Superieur = mysql_fetch_array($Req_Nb_Lot);
 
		$Req_Nb_Lot = mysql_query("SELECT COUNT(*) As NbSup2 FROM cat_prod_id, user WHERE Id_cat_prod_etat = '".$Lot_Etat."' AND user.Id_superieur = '".$Array_Nb_Superieur['Id']."' AND Id_online = '2' ")or die(mysql_error());
		$Count_Nb_Inferieur = mysql_fetch_array($Req_Nb_Lot);
 
 
		//Compter le total des Superieurs et Inferieurs
		$Count_total = $Count_Nb_Inferieur['NbSup2']+$Count_Nb_Superieur;
 
	}
	// Pour les commerciaux
	elseif($_SESSION['Rank'] == 2)
	{
 
		// Compter tout ses lots
		$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 Id_online = '2' ");
		$Count_Nb_Superieur = mysql_fetch_array($Req_Nb_Lot);
 
		// Compter tout les lots des apporteurs du commercial
		$Req_Nb_Lot = mysql_query("SELECT COUNT(*) As NbSup2 FROM cat_prod_id  WHERE cat_prod_id.Id_cat_prod_etat = '".$Lot_Etat."' AND  Id_user = '".$Utilisateur_Id."' AND Id_online = '2' ")or die(mysql_error());
		$Count_Nb_Inferieur = mysql_fetch_array($Req_Nb_Lot);
 
		// Compter le nombre de lots total	
		$Count_total = $Count_Nb_Superieur['NbSup1']+$Count_Nb_Inferieur['NbSup2'];
 
	}
return $Count_total;	
}
Dans cette fonction pour l'administrateur tout est bon et pour le commercial aussi seulement pour le gestionnaire ici je ne retrouve qu'un de ces commerciaux, logique mais j'aimerais joindre tout les vendeurs des commerciaux pour un gestionnaire.

Une idée ?