Script table paiement1x : Différence entre versions
De Wiki ODR
| (2 révisions intermédiaires par un autre utilisateur non affichées) | |||
| Ligne 7 : | Ligne 7 : | ||
<?php | <?php | ||
| − | / | + | /* |
| + | |||
| + | paiement1x.php | ||
| − | |||
Module pour créer une table en 1x à partir de la table paiement | Module pour créer une table en 1x à partir de la table paiement | ||
| Ligne 17 : | Ligne 18 : | ||
*/ | */ | ||
| − | require | + | require ## partie du script non affichée ## |
echo "<p /> Début du traitement <p />" ; | echo "<p /> Début du traitement <p />" ; | ||
| Ligne 116 : | Ligne 117 : | ||
?> | ?> | ||
</pre> | </pre> | ||
| + | |||
| + | |||
| + | [[Category:Portail:Suivi des données]] | ||
| + | [[Category:Données CNASEA RDR1]] | ||
Version actuelle datée du 7 septembre 2017 à 15:51
Script PHP autonome ayant pour objet de transformer la table paiement cnasea de 2 millions de lignes en une table paiement avec un bénéficiaire par ligne (environs 300 000 lignes).
Les paiements sont répartis par dispositif et année de versement.
<?php
/*
paiement1x.php
Module pour créer une table en 1x à partir de la table paiement
table paiement dans dossier cnasea_test
.cedric. 18/04/2007
*/
require ## partie du script non affichée ##
echo "<p /> Début du traitement <p />" ;
$sql = "select distinct(dispositif2) code from cnasea_test.paiement order by dispositif2*1" ;
$resultat = mysql_query( $sql, $db ) or $resultat = FALSE ;
if($resultat == FALSE){echo "le select ne fonctionne pas, fin du script <p />" ; exit ;}
// récupération des noms des dispositifs
unset($disp);
while ( $data = mysql_fetch_array( $resultat ) )
{
$disp[] = $data['code'];
}
$sql = "select distinct(annee) code from cnasea_test.paiement order by annee*1" ;
$resultat = mysql_query( $sql, $db ) or $resultat = FALSE ;
if($resultat == FALSE){ echo "le select ne fonctionne pas, fin du script <p />" ; exit ;}
// récupération des années de paiement
unset($ann);
while ( $data = mysql_fetch_array( $resultat ) )
{
$ann[] = $data['code'];
}
echo "<p /> Fin de sélection des données <p />" ;
// création de la nouvelle table en deux étapes
$sql = "create temporary table cnasea_test.tmppaiement (xxxind INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, index( ID_IND ), index( CODE_INSEE_COM ))" ;
$sql .= " select ID_IND, CODE_INSEE_COM " ;
for ( $i=0 ; $i<count($disp) ; $i++ )
{
$sql .= ", max(if( dispositif2 = '".$disp[$i]."',CODE_INSEE_COM, '')) ".$disp[$i]."_insee" ;
$sql .= ", sum(if( dispositif2 = '".$disp[$i]."',MT_FRACT_VERSION_ECH_VERS, '0')) ".$disp[$i] ;
for ( $ii=0 ; $ii<count($ann) ; $ii++)
{
$sql .= ", sum(if( dispositif2 = '".$disp[$i]."' and annee = '".$ann[$ii]."',MT_FRACT_VERSION_ECH_VERS, '0')) ".$disp[$i]."_".$ann[$ii] ;
}
}
for ( $ii=0 ; $ii<count($ann) ; $ii++)
{
$sql .= ", sum(if( annee = '".$ann[$ii]."', MT_FRACT_VERSION_ECH_VERS, '0')) v".$ann[$ii] ;
}
$sql .= " from cnasea_test.paiement group by ID_IND " ;
echo "<p />$sql<p />" ;
mysql_query( $sql, $db ) or $resultat = FALSE ;
IF($resultat == FALSE) { echo "l'exécution de la requête a échoué" ; exit ; }
echo "<p />supression des zéro<p />" ;
$sql = "create table cnasea_test.paiement1x (xxxind INT( 11 )
NOT NULL AUTO_INCREMENT PRIMARY KEY, index( ID_IND ), index( CODE_INSEE_COM ))" ;
$sql .= " select ID_IND, CODE_INSEE_COM " ;
for ( $i=0 ; $i<count($disp) ; $i++ )
{
$sql .= ",".$disp[$i]."_insee" ;
$sql .= ", if(".$disp[$i]." = 0, '',".$disp[$i].") ".$disp[$i] ;
for ( $ii=0 ; $ii<count($ann) ; $ii++)
{
$sql .= ", if(".$disp[$i]."_".$ann[$ii]." = 0, '',".$disp[$i]."_".$ann[$ii].") ".$disp[$i]."_".$ann[$ii] ;
}
}
for ( $ii=0 ; $ii<count($ann) ; $ii++)
{
$sql .= ",if( v".$ann[$ii]." = 0, '', v".$ann[$ii].") v".$ann[$ii] ;
}
$sql .= " from cnasea_test.tmppaiement" ;
echo "<p />$sql<p />" ;
mysql_query( $sql, $db ) or $resultat = FALSE ;
IF($resultat == FALSE) { echo "l'exécution de la requête a échoué" ; exit ; }
ELSE echo "<p />Fin du traitement, vous pouvez éteindre votre ordinateur.<p />" ;
?>

