Script table paiement1x
De Wiki ODR
Révision datée du 26 avril 2007 à 15:23 par Admin (discussion | contributions)
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 // origine cedric : https://esrcarto.supagro.inra.fr/intranet/carto/stage/log_cedric/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 />" ; ?>