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

Requêtes MySQL Discussion :

Optimisation de requête : Gestion de stock Location PHP


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut Optimisation de requête : Gestion de stock Location PHP
    * Bonjour, *

    je colle sur un problème .... depuis plusieurs mois.
    ça fonctionne. c'est fiable. mais lent.

    je ne parviens pas a trouver une alternative qui bouffe moins de ressource.
    il s'agit d'un logiciel de gestion de stock de location.
    je veux pouvoir voir à une plage de date (par exemple du 01/12/2016 au 20/12/2016) le matériel dispo

    je simplifie ma BDD pour l'exemple :
    TABLE PRODUITS :
    produits_id, produits_reference

    TABLE DOCUMENTS :
    documents_id, datedebut, datefin

    TABLE DOCUMENTS_LIGNES
    lignes_id, documents_id, produits_id, lignes_quantite


    SCRIPT PHP 1 simplifié, fonctionnel mais lent :
    => recherche du stock sortant pour 1 produits ($produits_id) sur une plage donnée ($datedebut à $datefin)
    pour 1 produits donné il peut y en avoir 15 sorties le 01/12, 25 sorties 10/12 etc etc..
    ceux qui m'interesse c'est donc la valeur maximale sortie sur une plage donnée

    à savoir que mes tables peuvent avoir plusieurs millions de lignes.

    // $datedebut est le debut de la plage qui m'interesse
    // $datefin est la fin.
    // on regarde la dispo de stock pour chaque heure pleine donc pour mon WHILE j'ajoute 3600 à chaque tour sur $datedebut

    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
     
        $qtmax = 0;
        while($datedebut <= $datefin)
        {
            $req_sortant = mysql_query("
                SELECT 
                    SUM(lignes.lignes_quantite) as qtsortant
                FROM 
                    DOCUMENTS_LIGNES AS lignes
                        JOIN DOCUMENTS AS documents on documents.documents_id = lignes.documents_id
                WHERE
                    ".$datedebut." BETWEEN documents.datedebut AND documents.datefin
                    AND
                    lignes.produits_id = '".$produits_id."'
                    AND
                    lignes.lignes_quantite != 0
                group by 
                    lignes.produits_id") or die (bug(343,mysql_error()));
     
            $sortant = mysql_fetch_array($req_sortant);
     
            if($qt[$datedebut] > $qtmax)
            {
                $qtmax = $qt[$datedebut];
            }
     
            $datedebut = $datedebut + 3600;
        }
    echo $qtmax;


    si quelqu'un arrive à m'aider ce serait dingue!

    merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Donc l'objectif c'est de le faire directement dans la requête ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut
    l'objectif c'est d'optimiser l'ensemble du script... donc eventuellement de tout faire en SQL.
    la c'est très lourd lorsque je met des plages horaires de plusieurs jours...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si je résume bien, le but c'est de trouver le max de lignes dans une plage de dates données, c'est bien ça ? sachant que tu n'as pas une date de référence en base, mais également une plage de dates.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 641
    Billets dans le blog
    10
    Par défaut
    Bonsoir,

    Quelque chose m'échappe dans l'expression de besoins : pour connaitre un stock disponible à un instant "t" vous avez besoin de connaitre
    - le stock initial (issu du dernier inventaire par exemple)
    - les mouvements signés (+/-) à date éventuellement date+heure
    - facultativement, une unité de mesure de la quantité, dans le cas où elle peut changer (article vendu à la pièce mais acheté à la centaine par exemple)

    Or vous n'avez ni stock initial, ni date sur vos mouvements, ni unité de mesure
    Avez vous bien décrit toutes vos tables et colonnes ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Par défaut
    Bonjour escartefigue

    en effet, je connais mon stock initial.
    pas besoin d'unité de mesure dans mon cas. 1 produits c'est 1 unité.
    les dates des mouvements sont dans la table DOCUMENTS

Discussions similaires

  1. [Toutes versions] Assemblage de deux requêtes gestion de stock
    Par HenryKretz dans le forum Access
    Réponses: 7
    Dernier message: 09/07/2015, 16h39
  2. Requête gestion de stock
    Par chm021 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 22/06/2008, 18h21
  3. problème requête gestion des stocks
    Par dodie84 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/04/2008, 09h54
  4. [Requête]gestion de stock
    Par xungphong dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/04/2007, 19h14
  5. appel requête access stockée en php
    Par nek_kro_kvlt dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/07/2006, 15h05

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