Traitement de doublons compliqué
Bonjour à tous !
Je suis sur un projet qui nécéssite de faire une chose assez complexe à mes yeux.
En effet, chaque mois, un fichier contenant des enregistrements est fait. Il est converti en table de base de données:
Code:
1 2 3
| Janvier2010 -> Une table
Fevrier2010 -> Une table
Mars2010 -> Une table |
Cependant, le monde de l'entreprise ne fonctionne pas toujours comme prévu, et il arrive que les fichiers en question soient envoyés avec un autre, mais dans le meme, ce qui donne :
Code:
1 2 3 4 5 6 7
| Janvier2010 -> Une table
Fevrier2010 -> ???
Mars2010 -> ???
Avril2010 -> Une table ( qui contient les enregistrements de fevrier et mars )
Mai2010 -> Une table
Juin2010 -> ???
Etc ... |
On ne peut pas prévoir le décalage. Ce que l'on sait, c'est que si une table contient des doublons sur le noms c'est qu'il y a plusieurs facturations dans la meme table.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Exemple correct :
ROBERT Julien
RYU Titi
Deux facturations
ROBERT Julien
ROBERT Julien
RYU Titi
RYU Titi
Trois facturations :
ROBERT Julien
ROBERT Julien
ROBERT Julien
RYU Titi
RYU Titi
RYU Titi
Etc ... |
Le soucis est que j'affiche ces données sur un graphique ( Avec artichow mon bien aimée :) ) de la manière suivante :
Code:
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
| foreach($selected_year as $selectValue)
{
echo "<h1>Année $selectValue</h1><br><br>";
// Une boucle qui permet de récuperer les données sur chaque mois de l'année selectionnée
for($i;$i<12;$i++)
{
// On compose le nom de la table dans la BDD avec le mois selectionné
$T_factur=$mois[$i].$selectValue;
// Calcul du montant de la facture
$result = mysql_query("SELECT LOYER FROM ".$T_factur." WHERE CODE_PRODUIT_CATALOGUE LIKE '%bal%' AND LOYER>0");
while ($row = mysql_fetch_object($result))
{
$loyer=$row->LOYER;
$loyer=str_replace(",",".",$loyer);
$loyersum = $loyersum + $loyer;
}
$values[$i] = $loyersum;
$loyersum = 0;
$result = mysql_query("SELECT LOYER FROM $T_factur WHERE CODE_PRODUIT_CATALOGUE LIKE '%CLASST%' AND LOYER>0");
while ($row = mysql_fetch_object($result))
{
$loyer=$row->LOYER;
$loyer=str_replace(",",".",$loyer);
$loyersum = $loyersum + $loyer;
}
$values2[$i] = $loyersum;
$loyersum = 0;
}
} |
Les arrays "values" et "values2" sont envoyé à mes graphiques artichow, comportant chacun les sommes des loyers des mois. ( Janvier, fevrier, mars ..., decembre )
L'array "mois" contient la liste des mois au format texte
Le nom des tables est composé avec ce mois et l'année selectionnée par l'utilisateur.
Pour simplifier la base, on va dire qu'elle comporte dans chaque table les champs NOM, PRENOM, CODE_PRODUIT_CATALOGUE et LOYER
Avez vous une idée, dans mon cas, de la marche à suivre pour lister les doublons, et suivant leur nombre ( 1, 2 ,3 ou plus ) en décaler un sur le mois d'avant, puis celui d'avant, puis celui d'avant, etc ... ( Un au hasard, les loyers sont les memes à un centime près, et celà ne dérange en rien l'étude statistique si il y a une différence de quelques euros ) ???
Ce traitement doit se faire sans créer de nouvelles tables, et donc uniquement avec des requetes SQL ou des actions en PHP.
NB : Il faut tenir compte du fait qu'une facturation en decembre 2009 peut etre dans la facturation de Fevrier 2010.
Comme d'habitude, je ne demande pas la solution mais une marche à suivre !
Bien cordialement :)