IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Somme de lignes sur un champ


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut Somme de lignes sur un champ
    Bonjour,

    J'ai un tableau PHP ayant la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    site1	|	poids	|	site2
    A1000	|	10	|	A2000
    A1001	|	15	|	A2000
    A1002	|	20	|	A2000
    A1000	|	10	|	A2000
    A1003	|	10	|	A3000
    A1004	|	20	|	A3000
    A1005	|	30	|	A3000
    J'aimerais effectuer l'opération consistant à obtenir un résultat du genre:
    Pour le 'site2' A2000:
    poids(A2000)=poids(A1000)+poids(A1001)+poids(A1002)
    poids(A2000)=10+15+20=45

    Et pour le 'site2' A3000:
    poids(A3000)=10+20+30=60

    En gros, je veux que chaque 'site2' prenne le 'poids' de chaque 'site1' tout en négligeant les 'site1' redondants (comme c'est le cas de A1000). Comment faire sous PHP?
    J'espère que j'ai été clair dans mes explications. Merci.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Hello,
    Ce n'est pas un pb de PHP mais d'algorithmique
    Ce que je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // La variable nommée sites contient les données à analyser
    recherche = "A2000" // site2 à traiter
    total = 0 // Poids total
    déjàFaits = Tableau( ) // Tableau contenant les site1 déjà traités
    PourChaque élément De sites Faire
        // Si l'élément est sujet à la recherche...
        Si élément.site2 == recherche Alors
            // Si le site1 n'a pas encore été traité...
            Si DansTableau(élément.site1, déjàFaits) == Faux Alors
                total = total + élément.poids
                // site1 traité, on le place dans le tableau déjàFaits
                Empiler(déjàFaits, élément.site1)
            FinSi
        FinSi
    FinPourChaque
    Afficher("Poids total des site1 dédoublonnés de ", recherche, " est ", total)
    Fonctions PHP qui seront utiles :
    http://fr.php.net/in-array (= DansTableau( ))
    http://fr.php.net/array-push (= Empiler( ))
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Séb. Voir le message
    [code]
    recherche = "A2000" // site2 à traiter
    Ce que t'appelle 'recherche' est une variable? dois-je faire ça pour tous les site2? j'ai des milliers d'enregistrements.

    élément.site1 et élément.site2 sont aussi des variables?

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par aiss57 Voir le message
    Ce que t'appelle 'recherche' est une variable?
    Oui.

    dois-je faire ça pour tous les site2?
    Si tu veux connaître le poids de chaque site2 alors oui.

    élément.site1 et élément.site2 sont aussi des variables?
    élément représente une ligne du tableau fourni plus haut.
    élément.site1 et élément.site2 sont respectivement les valeurs des "champs" site1 et site2 de l'élément en question.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta réponse très rapide.

    Citation Envoyé par Séb. Voir le message
    Oui.
    Si tu veux connaître le poids de chaque site2 alors oui.
    Je ne pense pas que cette solution soit valable pour mon cas puisque j'ai des milliers d'enregistrement. J'ai pris A2000 et A3000 juste pour l'exemple.

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par aiss57 Voir le message
    Je ne pense pas que cette solution soit valable pour mon cas puisque j'ai des milliers d'enregistrement. J'ai pris A2000 et A3000 juste pour l'exemple.
    N'est-ce pas un traitement ponctuel ??
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Je viens de voir que tu avais posté dans la section MySQL.
    Si les données sont dans une BdD tu peux faire une requête pour obtenir ces infos.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Je viens de voir que tu avais posté dans la section MySQL.
    Si les données sont dans une BdD tu peux faire une requête pour obtenir ces infos.
    Justement j'aimerais éviter le fait de créer plein de tables MySQL, cela surcharge le serveur... Donc j'ai pensé à récupérer les résultats de mes requêtes dans des tableaux PHP et ensuite les manipule. Je pense que ça réparti la charge de travail entre le poste de travail et le serveur.

    Donc, sous MySQL et en créant des tables intermédiaires, j'ai déjà la solution du problème que j'expose dans ce post. En gros je fais un SELECT DISTINCT et un SUM et voilà...
    J'aimerai pouvoir faire la même chose mais sous PHP.

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    Pour PHP je t'ai donné la marche à suivre, et effectivement ça risque de prendre un peu de temps, mais ça ne devrait pas être gênant pour un traitement ponctuel. Prend en compte que PHP est exécuté sur le serveur et pas sur le poste de travail.
    Cependant je pense que ce sera bien plus efficace avec MySQL qui est fait justement pour traiter ce genre de situation.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [AC-2003] Doublon de lignes sur 2 champs
    Par kawaya dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2013, 14h30
  2. somme des lignes d'un champ ayant une meme propriété
    Par idrissiSimohamed dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 30/05/2011, 17h56
  3. Réponses: 19
    Dernier message: 20/09/2010, 09h04
  4. Somme ou compte sur un champ Oui\Non
    Par e040098k dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/07/2007, 17h13
  5. Somme de lignes sur union : je sèche.
    Par Vincenteyssier dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/12/2005, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo