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 :

Rassembler résultats de 2 requetes sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut Rassembler résultats de 2 requetes sql
    Bonjour,

    J'aimerais rassembler les résultats de 2 requêtes identiques.
    Je m'explique, j'ai 2 bases, avec chacune une table pays(Nom, Ville).
    Dans la première table j'ai par exemple :
    France Paris
    France Marseille
    USA Los Angeles
    Russie Moscou
    Et dans la deuxieme :
    France Lyon
    USA New-York

    Ma requete est SELECT count(*) as nb From Pays GROUP BY Nom, ORDER BY nb

    je récupère donc :
    France 2
    USA 1
    Russie 1
    et :
    France 1
    USA 1

    je voudrais pouvoir joindre les résultats pour avoir :
    France 3
    USA 2
    Russie 1


    Est-ce possible facilement de joindre les résultats des 2 rèquetes ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    peut etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUM(nb) FROM
    (SELECT COUNT(*) as nb FROM table1 GROUP BY nom UNION SELECT COUNT(*) as nb FROM table2 GROUP BY nom )
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Citation Envoyé par sabotage Voir le message
    peut etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUM(nb) FROM
    (SELECT COUNT(*) as nb FROM table1 GROUP BY nom UNION SELECT COUNT(*) as nb FROM table2 GROUP BY nom )
    Mais non comme j'ai dit c'est dans 2 bases différentes

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Mais non comme j'ai dit c'est dans 2 bases différentes
    Si les 2 bases sont sur le même serveur MySQL, tu peux le faire, suffit de rajouter/préfixer le nom de la base aux champs, et exploiter les alias au besoin.

    Exemple (bidon) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.nom AS nomA, b.nom AS nomB
    FROM baseA.unetable AS a
    JOIN baseB.unetable AS b ON b.id = a.id
    Théoriquement ça devrait fonctionner grâce aux alias (a et b) même si les noms des tables et des champs sont les mêmes dans 2 Bdd différentes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Si les 2 bases sont sur le même serveur MySQL, tu peux le faire, suffit de rajouter/préfixer le nom de la base aux champs, et exploiter les alias au besoin.

    Exemple (bidon) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.nom AS nomA, b.nom AS nomB
    FROM baseA.unetable AS a
    JOIN baseB.unetable AS b ON b.id = a.id
    Théoriquement ça devrait fonctionner grâce aux alias (a et b) même si les noms des tables et des champs sont les mêmes dans 2 Bdd différentes.
    Oui mais c'est justement sur 2 serveurs différents

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par dzaohfz
    Oui mais c'est justement sur 2 serveurs différents
    A ben ça tu ne l'avais pas dis.

    Cette fois, je ne crois pas que ce soit possible, mais je suis loin, même très loin d'avoir tout vu sur MySQL.

    Donc sauf erreur, il te reste plus qu'à faire 2 requêtes SQL sur chaque serveur pour ensuite exploiter les tableaux en Php pour fusionner le tout.
    Un array_intersect() peut être.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Oui je cherche une fonction php pour combiner mes 2 tableaux en additionnant quand le nom est le même.
    array_intersect ça ressort les valeurs communes aux 2 tableaux mais sans addtionner

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    et array_merge ?

    Question quand même : Est ce que les clés (les Ids) sont les mêmes pour 2 données théoriquement identiques ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    et array_merge ?
    Ca n'additionne pas non plus pour les même nom il me semble

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Sinon, array_push ?

    Ou alors créer un 3ème tableau qui stockera le tableau Bdd1 et Bdd2, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $array[0] = $bdd1;
    $array[1] = $bdd2;

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Sinon, array_push ?

    Ou alors créer un 3ème tableau qui stockera le tableau Bdd1 et Bdd2, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $array[0] = $bdd1;
    $array[1] = $bdd2;
    ça ne m'additionne toujours pas pour les même noms

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    on peut peut etre faire mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($tableau1 as $key=>$value) {
           if (isset($tableau2[$key])) {
                    $tableau1[$key] += $tableau2[$key];
                    unset($tableau2[$key]);
           }
    }
     
    array_merge($tableau1, $tableau2);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Il faudrait alors le faire "à la mano", comme parcourir une des tableaux, puis en boucle parcourir le 2ème et faire une comparaison et l'addition au besoin tout en recréant un 3ème tableau final.

    Ce que tu veux est peut être trop spécifique pour qu'une fonction existe.
    Pour ma part, je ne vois pas.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Citation Envoyé par sabotage Voir le message
    on peut peut etre faire mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($tableau1 as $key=>$value) {
           if (isset($tableau2[$key])) {
                    $tableau1[$key] += $tableau2[$key];
                    unset($tableau2[$key]);
           }
    }
     
    array_merge($tableau1, $tableau2);
    PAS MAL


    EDIT: Ca marche nickel merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recharger une JTable avec le résultat d'une requete sql
    Par Premium dans le forum Composants
    Réponses: 2
    Dernier message: 06/06/2007, 15h19
  2. [SQL] Résultat d'une requete SQL en 2 colonnes
    Par apt dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/02/2007, 02h24
  3. Réponses: 2
    Dernier message: 03/09/2006, 11h02
  4. Résultat d'une requete SQL vers Excel
    Par climz dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 15h44
  5. résultat d'une requete SQL dans un tableau en JSP
    Par Paradoxys dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/04/2005, 16h17

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