IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Optimisation de requete suite a probleme de depassement de ressources chez OVH [MySQL]


Sujet :

PHP & Base de données

  1. #41
    Invité
    Invité(e)
    Par défaut
    Il ne faut faire QU'UN SEUL mysql_result.
    Toutes les "sommes" sont des résultats de la MÊME requête.

    Remplace :
    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
    		$totMT_1 = mysql_result($sql_sum, 0, 'com_fact_montant_final');
                    $totMT_1= number_format($totMT_1, 2, ',', ' '); 
                    echo 'totMT_1 : '.$totMT_1.'<br>';
     
                    $totcomretro = mysql_result($sql_sum, 0, 'com_fact_retrocommission');
                    $totcomretro= number_format($totcomretro, 2, ',', ' '); 
                    echo 'totcomretro : '.$totcomretro.'<br>';
     
    		$totcombq = mysql_result($sql_sum, 0, 'com_fact_commission_banque');
                    $totcombq= number_format($totcombq, 2, ',', ' '); 
                    echo 'totcombq : '.$totcombq.'<br>';
     
    		$totfrmt = mysql_result($sql_sum, 0, 'com_frmd_mt') + mysql_result($sql_sum, 0, 'com_immo_frais_courtage');
                    $totfrmt= number_format($totfrmt, 2, ',', ' '); 
                    echo 'totfrmt : '.$totfrmt.'<br>';
     
    		$totcomnette = mysql_result($sql_sum, 0, 'com_fact_commission_nette');
                    $totcomnette= number_format($totcomnette, 2, ',', ' '); 
                    echo 'totcomnette : '.$totcomnette.'<br>';
    par :
    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
    		// ----------
    		// Résultat de la requête
    		$row_sum = mysql_result($sql_sum);
    		// ----------
    		// Récupération des données (issues de la requête)	
    		$totMT_1 = $row_sum['com_fact_montant_final'];
    		$totcomretro = $row_sum['com_fact_retrocommission'];
    		$totcombq = $row_sum['com_fact_commission_banque'];
    		$totfrmt = $row_sum['com_frmd_mt'] + $row_sum['com_immo_frais_courtage'];
    		$totcomnette = $row_sum['com_fact_commission_nette'];
    		// ----------
    		// Formatage
    		$totMT_1 = number_format($totMT_1, 2, ',', ' '); 
    		$totcomretro = number_format($totcomretro, 2, ',', ' '); 
    		$totcombq = number_format($totcombq, 2, ',', ' '); 
    		$totfrmt = number_format($totfrmt, 2, ',', ' '); 
    		$totcomnette = number_format($totcomnette, 2, ',', ' '); 
    		// ----------
    		// Affichage
    		echo 'totMT_1 : '.$totMT_1.'<br>';
    		echo 'totcomretro : '.$totcomretro.'<br>';
    		echo 'totcombq : '.$totcombq.'<br>';
    		echo 'totfrmt : '.$totfrmt.'<br>';
    		echo 'totcomnette : '.$totcomnette.'<br>';
    Tu codes "à la va-comme-je-te-pousse" !

    Tu dois être plus RIGOUREUX !
    • récupération des données (issues de la requête)
    • formatage
    • affichage

    Sinon, tu vas continuer à galérer.

    N.B. Il faut même (sans doute) faire appel à floatval() sur les données récupérées, pour éviter de concaténer des chaines au lieu des additions voulues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		// ----------
    		// Récupération des données (issues de la requête)	
    		$totMT_1 = floatval($row_sum['com_fact_montant_final']);
    		$totcomretro = floatval($row_sum['com_fact_retrocommission']);
    		$totcombq = floatval($row_sum['com_fact_commission_banque']);
    		$totfrmt = floatval($row_sum['com_frmd_mt']) + floatval($row_sum['com_immo_frais_courtage']);
    		$totcomnette = floatval($row_sum['com_fact_commission_nette']);
    Dernière modification par Invité ; 16/09/2019 à 19h09.

  2. #42
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Re,


    Merci pour cette simplification de code que je comprends mieux.

    Pour autant cela ne change pas le resultat qui reste à 0 pour chacun alors que j'ai bien des valeurs d'indiquer dans ma BDD comme affichés ci-dessous.

    Nom : bdd_sql_sum.jpg
Affichages : 129
Taille : 99,1 Ko

    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
    $sql_sum = $sql_select_sum.$sql_jonction.$sql_conditions.$date_liste.$secureclient." GROUP by D.idCLIENT";
    				echo 'sql_sum : '.$sql_sum.'<br>';
    				$row_sum = mysql_result($sql_sum);
     
    				// Récupération des données (issues de la requête)	
    				$totMT_1 = floatval($row_sum['com_fact_montant_final']);
    				$totcomretro = floatval($row_sum['com_fact_retrocommission']);
    				$totcombq = floatval($row_sum['com_fact_commission_banque']);
    				$totfrmt = floatval($row_sum['com_frmd_mt']) + floatval($row_sum['com_immo_frais_courtage']);
    				$totcomnette = floatval($row_sum['com_fact_commission_nette']);
     
    				echo 'totMT_1 : '.$totMT_1.'<br>';
    				echo 'totcomretro : '.$totcomretro.'<br>';
    				echo 'totcombq : '.$totcombq.'<br>';
    				echo 'totfrmt : '.$totfrmt.'<br>';
    				echo 'totcomnette : '.$totcomnette.'<br>';

    les echos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sql_sum : SELECT D.idCLIENT, SUM(D.fact_montant_final) as com_fact_montant_final, SUM(D.frmd_mt) as com_frmd_mt, SUM(I.immo_frais_courtage) as com_immo_frais_courtage, SUM(D.fact_commission_banque) as com_fact_commission_banque, SUM(D.fact_retrocommission) as com_fact_retrocommission, SUM(D.fact_commission_nette) as com_fact_commission_nette FROM `extratest_dem` D INNER JOIN `extratest_dem_pro` P ON D.idCLIENT =P.idCLIENT INNER JOIN `extratest_dem_immo` I ON D.idCLIENT =I.idCLIENT INNER JOIN `extratest_dem_gestion` G ON D.idCLIENT =G.idCLIENT INNER JOIN `extratest_utilisateur` U ON G.idGEST =U.idUT WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' GROUP by D.idCLIENT
    totMT_1 : 0
    totcomretro : 0
    totcombq : 0
    totfrmt : 0
    totcomnette : 0
    Merci encore pour votre aide

  3. #43
    Invité
    Invité(e)
    Par défaut
    mysql_ (mysql_result,...) est obsolète !
    Je n'ai rien à dire de plus.

    Je ne vais pas régresser pour toi.
    Évolue vers PDO.
    Dernière modification par Invité ; 17/09/2019 à 15h28.

  4. #44
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kaolivier Voir le message
    ...tu souleves un probleme connu. Il m'a été demandé au moins une centaine de fois...

    ... le voila utilisé (gratuitement) a plus de 20 agences qui sont toutes liées à l'association ....
    Citation Envoyé par kaolivier Voir le message
    Je sais ce qui me reste à faire dans l'avenir mais pas dans l'immédiat.

    Je profiterai de la fermeture des asso en fin d'année pour recréer une architecture qui correspond a nos échanges, et leur fournir a la rentrée 2020...
    Laisser perdurer une aussi GROSSE ERREUR de conception est totalement IRRESPONSABLE de ta part !

  5. #45
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonjour Jreaux62,

    Ecoute je te remercie pour toute ton aide apportée, mais il faudrait se calmer un peu sur les mots, surtout quand tu traites mes choix d'IRRESPONSABLES.

    Tu ne connais pas ma vie, je suis à nouveau papa depuis 15jours, je dors quasiment pas puisque je m'occupe seul aussi de mon autre enfant de 3ans, et l'on m'a decouvert durant la grossesse de ma femme une maladie auto-immune pour laquelle mon temps risque d'être compté, et je le passe pourtant a aider bénévolement des associations.

    On utilise le mot IRRESPONSABLE pour la mise en danger d'autrui, pour un acte à conséquence dramatique.

    La on parle d'un simple code en utilisation fermée, alors je te remercie d'être tant passionné, et tout ce que tu m'as apporté mais calme un peu tes ardeurs de défenseurs du bon code. Il y a tellement plus grave dans la vie qui réclame que l'on soit RESPONSABLE, notamment se battre chaque jour pour faire les bons choix pour rester en vie pour ses enfants.

    Merci.

  6. #46
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je te félicite pour ton 2ème enfant, et suis désolé pour ta maladie.

    Mais ta définition d'"irresponsable" est exagérée.
    On n'est pas en train de parler d'une asso. de joueurs de belote, ou de tricot.

    Si j'ai bien compris, il s'agit quand même de personnes en difficulté (financière ou autre), et de plus de 20 agences !
    Pour ces personnes, c'est peut-être (en exagérant aussi) une "question de vie ou de mort", ou, en tout cas, pour qui les conséquences d'une erreur pourrait être dramatiques.

    Donc, je maintiens que ton attitude* est "irresponsable", vis-à-vis de ces personnes.
    * Je ne dis évidemment pas que "TU" l'es, mais bien "ton attitude", qui consiste à remettre les corrections à plus tard.


    En ce qui concerne TON code, soyons clairs :
    • 1- on NE PEUT PAS corriger un code dont la CONCEPTION est bancale.

    D'autant que c'est sans doute cette mauvaise conception qui est responsable (!) des dépassements de ressources et autres dysfonctionnements.

    • 2- D'autre part, on NE PEUT PAS apprendre à coder à ta place.

    Manifestement, tu ne connais pas assez bien la syntaxe mysql_, et encore moins la syntaxe SQL !
    Et je t'ai mis des liens sur PDO (encore faut-il que tu cliques dessus...)

    Nous sommes TROIS CINQ a t'avoir donné des CONSEILS.
    A TOI maintenant de les APPLIQUER.

    Bonne journée.
    Dernière modification par Invité ; 17/09/2019 à 15h33.

  7. #47
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tout d'abord toutes les valeurs sont a 0 dans ma base, car INT (11) ou DECIMAL (10,2)
    Olivier... Es-tu bien certain que tes champs en question sont bien NULL interdit (not nullable) ?
    que te retourne la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select mon_champ from ma_table where mon_champ IS NULL or trim(mon_champ)=""
    Ca te retourne bien rien du tout du tout, sur tous les champs que tu sommes ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #48
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Citation Envoyé par Dendrite Voir le message
    Olivier... Es-tu bien certain que tes champs en question sont bien NULL interdit (not nullable) ?
    que te retourne la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select mon_champ from ma_table where mon_champ = NULL or trim(mon_champ)=""
    Ca te retourne bien rien du tout du tout, sur tous les champs que tu sommes ?
    Cette requête ne retournera que les lignes avec trim(mon_champ)="". Quel que soit la valeur, la comparer (= , !=, >, ...) avec null retournera toujours null.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select null = null; -- retourne null, évalué comme false
    select 'test' = null; -- retourne null, évalué comme false
    select null is null; -- retourne true (1)
    Il faut utiliser is null.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     where nom_colonne is null

    A+.

  9. #49
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Oui, pardon, merci Andry. Je rectifie.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select mon_champ from ma_table where mon_champ is NULL or trim(mon_champ)=""
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  10. #50
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bon, et si tu faisais ça (une par une) dans ton PHPmyadmin...
    A ces 3 stades, tes sommes n'affichent pas 0 ?

    Code SQL : 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
    46
    47
    48
    49
    50
    51
    /*Etape 1 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    0 as com_immo_frais_courtage, 
    SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
     
    /*Etape 2 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    0 as com_immo_frais_courtage, 
    SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    INNER JOIN extratest_dem_pro P ON D.idCLIENT =P.idCLIENT 
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
     
    /*Etape 3 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    SUM(I.immo_frais_courtage) as com_immo_frais_courtage,SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    INNER JOIN extratest_dem_pro P ON D.idCLIENT =P.idCLIENT 
    INNER JOIN extratest_dem_immo I ON D.idCLIENT =I.idCLIENT 
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #51
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Hello,

    je pense que D.nom_e LIKE '%' n'a aucune utilité, ce filtre peut être retiré de la requête.

  12. #52
    Invité
    Invité(e)
    Par défaut
    1- @Dendrite

    Dans ce message, il dit (et montre) que la requête fonctionne dans phpMyAdmin.
    Donc, à priori, il faut arrêter de s'acharner sur le NULL.

    2- Quant à moi, je suis allé fouiller dans mes vieilles archives pour retrouver des codes en myqsl_ !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result_sum = mysql_result($sql_sum);
    // boucle pour lister
    while ($row_sum = mysql_fetch_array($result_sum))
    {
     ...

  13. #53
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    je te félicite pour ton 2ème enfant, et suis désolé pour ta maladie.

    Mais ta définition d'"irresponsable" est exagérée.
    On n'est pas en train de parler d'une asso. de joueurs de belote, ou de tricot.

    Si j'ai bien compris, il s'agit quand même de personnes en difficulté (financière ou autre), et de plus de 20 agences !
    Pour ces personnes, c'est peut-être (en exagérant aussi) une "question de vie ou de mort", ou, en tout cas, pour qui les conséquences d'une erreur pourrait être dramatiques.

    Donc, je maintiens que ton attitude* est "irresponsable", vis-à-vis de ces personnes.
    * Je ne dis évidemment pas que "TU" l'es, mais bien "ton attitude", qui consiste à remettre les corrections à plus tard.


    En ce qui concerne TON code, soyons clairs :
    • 1- on NE PEUT PAS corriger un code dont la CONCEPTION est bancale.

    D'autant que c'est sans doute cette mauvaise conception qui est responsable (!) des dépassements de ressources et autres dysfonctionnements.

    • 2- D'autre part, on NE PEUT PAS apprendre à coder à ta place.

    Manifestement, tu ne connais pas assez bien la syntaxe mysql_, et encore moins la syntaxe SQL !
    Et je t'ai mis des liens sur PDO (encore faut-il que tu cliques dessus...)

    Nous sommes TROIS CINQ a t'avoir donné des CONSEILS.
    A TOI maintenant de les APPLIQUER.

    Bonne journée.
    Re jreaux62 ,

    Encore une fois je te remercie pour tous tes apports et aides.

    Pour le reste je ne souhaite pas polémiquer sur ce mot, il ne m'a pas convenu vu toute la situation, MAIS J'AI COMPRIS LE FOND et tu as évidemment raison.

  14. #54
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Olivier... Es-tu bien certain que tes champs en question sont bien NULL interdit (not nullable) ?
    que te retourne la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select mon_champ from ma_table where mon_champ IS NULL or trim(mon_champ)=""
    Ca te retourne bien rien du tout du tout, sur tous les champs que tu sommes ?
    OUI je confirme

    Colonne NULL -> NON

  15. #55
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Bon, et si tu faisais ça (une par une) dans ton PHPmyadmin...
    A ces 3 stades, tes sommes n'affichent pas 0 ?

    Code SQL : 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
    46
    47
    48
    49
    50
    51
    /*Etape 1 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    0 as com_immo_frais_courtage, 
    SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
     
    /*Etape 2 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    0 as com_immo_frais_courtage, 
    SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    INNER JOIN extratest_dem_pro P ON D.idCLIENT =P.idCLIENT 
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
     
    /*Etape 3 teste ceci */
     
    SELECT D.idCLIENT, 
    SUM(D.fact_montant_final) as com_fact_montant_final, 
    SUM(D.frmd_mt) as com_frmd_mt, 
    SUM(I.immo_frais_courtage) as com_immo_frais_courtage,SUM(D.fact_commission_banque) as com_fact_commission_banque, 
    SUM(D.fact_retrocommission) as com_fact_retrocommission, 
    SUM(D.fact_commission_nette) as com_fact_commission_nette 
     
    FROM extratest_dem D
     
    INNER JOIN extratest_dem_pro P ON D.idCLIENT =P.idCLIENT 
    INNER JOIN extratest_dem_immo I ON D.idCLIENT =I.idCLIENT 
     
    WHERE (D.suivi='d_b_termine' or D.etude='d_b_termine') and D.nom_e LIKE '%' and (D.date>'1554069600' or D.datemodif>'1554069600') and D.supp='0' 
     
    GROUP by D.idCLIENT;
    A chaque fois j'ai bien un tableau équivalent a celui précédemment indiqué avec mes 3 lignes

    voir ci-dessous :

    Nom : etape1-3.jpg
Affichages : 115
Taille : 204,6 Ko

  16. #56
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Hello,

    je pense que D.nom_e LIKE '%' n'a aucune utilité, ce filtre peut être retiré de la requête.

    Il a une utilité dans la mesure ou je recupere une valeur en GET pour cibler une recherche sur tout ou partie d'un nom

  17. #57
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    1- @Dendrite

    Dans ce message, il dit (et montre) que la requête fonctionne dans phpMyAdmin.
    Donc, à priori, il faut arrêter de s'acharner sur le NULL.

    2- Quant à moi, je suis allé fouiller dans mes vieilles archives pour retrouver des codes en myqsl_ !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result_sum = mysql_result($sql_sum);
    // boucle pour lister
    while ($row_sum = mysql_fetch_array($result_sum))
    {
     ...
    Le while ne semble rien apporter pour le mysql_result, il donne le resultat qu'avec le mysql_query, ce qui ne nous permet pas d'avoir les resulats souhaités

  18. #58
    Invité
    Invité(e)
    Par défaut
    CONSEIL : FAIS UN BREAK.
    Oublie cette discussion quelques jours.

    Quand tu auras l'esprit un peu plus aéré :
    • LIS les tutos qu'on t'a proposés (PDO, SQL,...)*
      Fais les exercices, familiarise-toi avec les syntaxes

    Ensuite seulement :[*]Reviens sur cette discussion, et RELIS TOUS les messages de puis le début.[*]Prends un CRAYON et du PAPIER.[*]Regarde la structure des tables en BDD, et DESSINE les liens entre elles (suis les conseils de Dendrite), [*]Essaie de SÉPARER les données "utilisateur" des données "dossiers" : il faut certainement créer une nouvelle table de LIAISON "utilisateur-dossiers" (contenant id_user et id_dossier) *[/LIST]
    * Mais bon. On en reparlera le moment venu.

  19. #59
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    MErci a tous votre aide,


    J'ai tenté de faire un mixe entre le code propre et mon codes obsolète

    et j'ai réussi a faire fonctionner ce code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql_sum = $sql_select_sum.$sql_jonction.$sql_conditions.$date_liste.$secureclient;
    $sql_sum = mysql_query($sql_sum." order by D.idCLIENT desc");
     
    $totMT_1 = mysql_result($sql_sum, 0, 'com_fact_montant_final');                                             $totMT_1= number_format($totMT_1, 2, ',', ' '); 
    $totfrmt = mysql_result($sql_sum, 0, 'com_frmd_mt') + mysql_result($res_4, 0, 'com_immo_frais_courtage');   $totfrmt= number_format($totfrmt, 2, ',', ' '); 
    $totcomretro = mysql_result($sql_sum, 0, 'com_fact_retrocommission');                                       $totcomretro= number_format($totcomretro, 2, ',', ' '); 
    $totcombq = mysql_result($sql_sum, 0, 'com_fact_commission_banque');                                        $totcombq= number_format($totcombq, 2, ',', ' '); 
    $totcomnette = mysql_result($sql_sum, 0, 'com_fact_commission_nette');                                      $totcomnette= number_format($totcomnette, 2, ',', ' ');

    Premier constat, c'était le GROUP by D.idCLIENT qui empechait la récuperation des resultats, alors qu'il ne l'empéchait pas dans mon ancien code.


    Deuxieme constat je ne peux pas grouper les mysql_result comme le proposait jreaux62, mais merci quand même de m'avoir aidé. Avec ce groupement j'ai encore des 0 de partout.

    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
    	// Résultat de la requête
    		$row_sum = mysql_result($sql_sum);
    		// ----------
    		// Récupération des données (issues de la requête)	
    		$totMT_1 = $row_sum['com_fact_montant_final'];
    		$totcomretro = $row_sum['com_fact_retrocommission'];
    		$totcombq = $row_sum['com_fact_commission_banque'];
    		$totfrmt = $row_sum['com_frmd_mt'] + $row_sum['com_immo_frais_courtage'];
    		$totcomnette = $row_sum['com_fact_commission_nette'];
    		// ----------
    		// Formatage
    		$totMT_1 = number_format($totMT_1, 2, ',', ' '); 
    		$totcomretro = number_format($totcomretro, 2, ',', ' '); 
    		$totcombq = number_format($totcombq, 2, ',', ' '); 
    		$totfrmt = number_format($totfrmt, 2, ',', ' '); 
    		$totcomnette = number_format($totcomnette, 2, ',', ' '); 
    		// ----------

  20. #60
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    CONSEIL : FAIS UN BREAK.
    Oublie cette discussion quelques jours.

    Quand tu auras l'esprit un peu plus aéré :
    • LIS les tutos qu'on t'a proposés (PDO, SQL,...)*
      Fais les exercices, familiarise-toi avec les syntaxes

    Ensuite seulement :[*]Reviens sur cette discussion, et RELIS TOUS les messages de puis le début.[*]Prends un CRAYON et du PAPIER.[*]Regarde la structure des tables en BDD, et DESSINE les liens entre elles (suis les conseils de Dendrite), [*]Essaie de SÉPARER les données "utilisateur" des données "dossiers" : il faut certainement créer une nouvelle table de LIAISON "utilisateur-dossiers" (contenant id_user et id_dossier) *[/LIST]
    * Mais bon. On en reparlera le moment venu.

    Je suis 100% convaincu de la refonte de mon architecture ......

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [sgbd]Optimisation des requetes Oracle/Perl
    Par linou dans le forum SGBD
    Réponses: 7
    Dernier message: 30/06/2005, 18h09
  2. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26
  3. [C#] Requête MS Access (Problème avec Date)
    Par Erakis dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/02/2005, 22h54
  4. Optimisation de requete
    Par cyril dans le forum SQL
    Réponses: 3
    Dernier message: 09/10/2003, 08h57
  5. Optimisation des requetes
    Par bifidus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/10/2003, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo