Script table paiement1x : Différence entre versions

De Wiki ODR
Aller à : navigation, rechercher
 
(2 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 7 : Ligne 7 :
 
<?php
 
<?php
  
// origine cedric : https://esrcarto.supagro.inra.fr/intranet/carto/stage/log_cedric/paiement1x.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 "../backoffice-10/conf0.php" ;
+
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 à 14: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 />" ;

?>