ç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 : Tout sélectionner
$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