Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2007, 17h03   #1
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
Par défaut [SQL] Addition de données d'une base de données

Bonjour à tous,
J'ai une base de données sous la forme suivante :
Code X :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   
     id    nb  pic intensité 
    56017 1220 808 49010 
    56018 1220 809 14000 
    56019 1220 876 14000 
    56020 1221 308 14000 
    56021 1221 309 35010 
    56022 1221 309 21000 
    56023 1221 310 14000 
    56024 1221 595 21000 
    56025 1221 626 14000 
    56026 1221 808 49010 
    56027 1221 808 21000 
    56028 1221 808 28000
J'aimerais pouvoir créer une nouvelle base qui dit que pour chaque nb identique si on a plusieurs fois la même valeur de pic alors on somme l'intensité de manière à n'avoir plus que un nb, un pic, une intensité dans la nouvelle base de données.
Mon problème est que je ne sais pas, après avoir appelé la base de données, comment comparer une ligne avec la suivante dans mon code php...
Vous avez une idée ?
Merci beaucoup pour votre aide.
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 17h10   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Tu peux faire une requête SQL sur ta table qui va te faire ce calcul directement:
Code SQL :
SELECT nb, pic, SUM(intensite) AS IntensiteTotale FROM matable GROUP BY nb, pic;

ça va te renvoyer une ligne pour chaque paire nb/pic unique avec en intensité la somme des intensités pour cette paire (si j'ai bien compris ce que tu voulais).

Ensuite dans ton code PHP tu crées ta nouvelle table avec les bonnes colonnes, tu effectues ta requête, tu récupères dans un tableau tous les résultats a l'aide d'une boucle et ensuite, pour chaque élément de ton tableau tu fais un INSERT dans ta nouvelle table.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 17h18   #3
Rédacteur/Modérateur
 
Avatar de Deepin
 
Homme Deepin
Ingénieur - Chef de projet Modélisation/Simulation
Inscription : avril 2004
Messages : 1 341
Détails du profil
Informations personnelles :
Nom : Homme Deepin
Localisation : Ile Maurice

Informations professionnelles :
Activité : Ingénieur - Chef de projet Modélisation/Simulation
Secteur : Industrie

Informations forums :
Inscription : avril 2004
Messages : 1 341
Points : 7 085
Points : 7 085
Envoyer un message via Skype™ à Deepin
hello,
Dans ta deuxieme table je mettrai "nb" en unique.
Dans ta premiere table tu recuperes toutes les lignes pour un nb dans un tableau. Avec un foreach, tu compares les valeurs de pic lorque qu elle sont identiques tu le mets dans un autre tableau par exemple. tu fais la somme des intensités. Puis tu recupere dans ta deuxieme table la ligne correspondant a nb. Tu fais la somme des deux et tu updates ta ligne.
Voila.A+ et bon courage.

PS: si tu veux plus de code envoies tes tables avec les valeurs.
PS2: je crois bien que koopajah t'as bien mis sur le voie.
Deepin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 11h10   #4
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
Merci bien pour vos réponses
Je pense que ça peut m'aider... mais j'ai quand même un gros souci le code ci-dessous ne fonctionne pas !
Je vous passe les définitions de variables qui fonctionnent.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$request2="SELECT scan_number,mass,SUM(intensity) FROM ".$table_mass2;
mysql_query("TRUNCATE TABLE ".$table_mass3);
if ($result2=mysql_query($request2))
{
	while ($ligne=mysql_fetch_row($result2))
	{
		$scan_number=$ligne[0];
		$mass_rd=$ligne[1];
		$tot_intensity=$ligne[2];
	  // Mise des données dans la seconde base Mysql
    mysql_query("INSERT INTO ".$table_mass3." (scan_number,mass,intensity) VALUES (".$scan_number.",".$mass_rd.",".$tot_intensity.")");
}
}
else
{
	echo "problème avec la base de données ".$table_mass3;
}
En fait il ne rentre pas dans la boucle if
J'ai l'impression que c'est le SUM() qu'il ne comprend pas car si je l'enlève, il remplit la table... Alors je me suis dis que c'était un problème de fonction, j'ai essayé juste pour voir s'il faisait quelque chose avec MAX(), mais même problème ! D'ailleurs, j'ai également ce pb si je rajoute "GROUP BY ..." à la fin de ma ligne (sans la SUM() bien évidemment). Donc il doit y avoir une erreur de synthaxe quelque part dans $request2, mais où ?
une idée ?
Merci beaucoup.
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 11h12   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Il faut justement avoir un group by dans ta requete si tu veux faire un SUM sur un champ !
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 11h20   #6
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
Ben oui, mais je l'ai enlevé pour alléger pour voir si c'est ça qui clochait, mais ça change rien !
Avec le GROUP BY, ça marche pas non plus
Code :
$request2="SELECT scan_number,mass,SUM(intensity) FROM ".$table_mass2." GROUP BY ".$scan_number.",".$mass_new;
J'avoue que ça m'agace un peu...
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 11h23   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
pourquoi le group by dépend de variables? Le group by prend des noms de colonnes donc ca sera plutot ca:
Code :
$request2="SELECT scan_number,mass,SUM(intensity) FROM ".$table_mass2." GROUP BY  scan_number,mass";
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 11h24   #8
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
QUELLE TACHE !!!
C'est bon, je me suis emmêler les pinceaux avec les variables php et mysql la bonne requête c'est :
Code :
$request2="SELECT scan_number,mass,SUM(intensity) FROM ".$table_mass2." GROUP BY scan_number,mass";
Un grand merci !!!
Vous êtes supers !
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h55.


 
 
 
 
Partenaires

Hébergement Web