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 :
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
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;
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 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 ;
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.
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; }
Une idée ?
Partager