Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment utiliser count avec inner join

Sujet résolu
    2 juillet 2019 à 1:09:09

    Salut la famille j'ai un petit souci j'ai deux tables "transaction" et "utilisateur". Mon problème c'est que je veux compter le nombre de transaction dans la table "transaction" en utilisant comme réference le numéro de téléphone

    Aidez moi svpppppppptable transactiontable utilisateur

    -
    Edité par SabaykeBremso 2 juillet 2019 à 1:10:08

    • Partager sur Facebook
    • Partager sur Twitter
      2 juillet 2019 à 9:17:04

      Bonjour,

      Qu'est-ce qui permet de relier la table transaction à la table utilisateur ? Je ne vois aucune colonne en commun ...

      Quelle est la clé primaire de la table utilisateur ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        6 juillet 2019 à 2:40:49

        Salut Benzouye voici ma base de donnée Base de donnée
        • Partager sur Facebook
        • Partager sur Twitter
          8 juillet 2019 à 9:39:07

          SabaykeBremso a écrit:

          je veux compter le nombre de transaction dans la table "transaction" en utilisant comme réference le numéro de téléphone

          Il faut faire une jointure entre transaction et compte, puis entre compte et utilisateur ...

          Et qu'as-tu essayer jusqu'à présent ?

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            8 juillet 2019 à 16:17:43

            SELECT COUNT(*) as nbre_transaction -> FROM transaction -> INNER JOIN COMPTE on transaction.Id_Transaction=compte.id_compte -> inner join utilisateur on compte.id_compte = utilisateur.login where Num_Tel = 773244176;

            But it don't work 

            -
            Edité par SabaykeBremso 8 juillet 2019 à 16:18:53

            • Partager sur Facebook
            • Partager sur Twitter
              8 juillet 2019 à 16:55:46

              SabaykeBremso a écrit:

              But it don't work

              Cela ne signifie pas grand chose ... tu as une erreur ? Un résultat inattendu ?

              SabaykeBremso a écrit:

              INNER JOIN COMPTE on transaction.Id_Transaction=compte.id_compte

              Comment veux-tu que la jointure fonctionne si tu compares deux colonnes qui n'ont rien à voir ... L'id transaction est différent de l'id compte ...

              Il faut que tu utilises id_compte_1 ou id_compte_2, qui doivent représenter, je suppose, le compte source et le compte destination ...

              En fonction de ce que tu veux tu utiliseras l'un ou l'autre ... Exemple :

              SELECT COUNT(*) as nbre_transaction
              FROM
              	`transaction` T
              		INNER JOIN compte C
              			ON T.id_compte_1 = C.id_compte
              		INNER JOIN utilisateur U
              			ON C.id_compte = U.login
              WHERE U.Num_Tel = 773244176
              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                8 juillet 2019 à 18:52:17

                Ce que je veux c'est de compter le nombre de transaction en utilisant le numero du téléphone mais ça marche pas genre ke COUNT(*) renvoit toujours 0 :(
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juillet 2019 à 22:23:24

                  J'ai bien compris, mais si tu veux de l'aide il faut nous en dire plus ...

                  SabaykeBremso a écrit:

                  ça marche pas genre ke COUNT(*) renvoit toujours 0 :(

                  Pour quelle requête exécutée le COUNT retourne 0 ?

                  As-tu essayé la requête proposée juste avant ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    9 juillet 2019 à 0:34:48

                    Oui Mr Benzouye j'ai utilisé votre requête mais c'est ça qu'on m'affiche +------------------+ | nbre_transaction | +------------------+ | 0 | +------------------+ 1 row in set, 2 warnings (0.05 sec) mysql>

                    -
                    Edité par SabaykeBremso 9 juillet 2019 à 0:35:44

                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 juillet 2019 à 9:04:24

                      Si 0 est retourné c'est qu'il n'y a pas de données correspondantes aux jointures ...

                      Pour vérifier :

                      SELECT *
                      FROM utilisateur
                      WHERE num_tel = 773244176

                      Doit te retourner au moins un utilisateur.

                      Ensuite :

                      SELECT *
                      FROM
                          compte C
                              INNER JOIN utilisateur U
                                  ON C.id_compte = U.login
                      WHERE U.Num_Tel = 773244176

                      Doit te retourner une ligne pour chaque compte du ou des utilisateurs listés avant.

                      Si ces requêtes ne te retournent rien c'est qu'aucun compte n'existe ...

                      Enfin si ces deux requêtes te retournent quelque chose, mais que le COUNT donne 0 c'est qu'aucune transaction n'existe pour ces comptes ...

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        9 juillet 2019 à 11:41:17

                        Si 0 est retourné c'est qu'il n'y a pas de données correspondantes aux jointures ...

                        Pour vérifier :

                        SELECT *
                        FROM utilisateur
                        WHERE num_tel = 773244176

                        Doit te retourner au moins un utilisateur.

                        mysql> use sms_banking
                        Database changed
                        mysql> SELECT *
                            -> FROM utilisateur
                            -> WHERE num_tel = 773244176;
                        +----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        | Prenom   | Login   | Nom    | Num_Tel   | Etat_Type | Mot_de_Passe                             | Type   |
                        +----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        | elmoctar | sabayke | brahim | 773244176 | Actif     | 482f7629a2511d23ef4e958b13a5ba54bdba06f2 | client |
                        +----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        1 row in set (0.45 sec)
                        
                        mysql>



                        Ensuite :

                        SELECT *
                        FROM
                            compte C
                                INNER JOIN utilisateur U
                                    ON C.id_compte = U.login
                        WHERE U.Num_Tel = 773244176

                        Doit te retourner une ligne pour chaque compte du ou des utilisateurs listés avant.

                        Si ces requêtes ne te retournent rien c'est qu'aucun compte n'existe ...

                        mysql> SELECT *
                            -> FROM
                            ->     compte C
                            ->         INNER JOIN utilisateur U
                            ->             ON C.id_compte = U.login
                            -> WHERE U.Num_Tel = 773244176;
                        Empty set (0.09 sec)

                        Du coup j'ai fais une petite modification du genre

                        mysql> SELECT *
                            -> FROM
                            ->     compte
                            ->         INNER JOIN utilisateur ON Id_User=Login
                            -> WHERE Num_Tel=773244176;
                        +-----------+---------+-------+-------------+------+----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        | Id_Compte | Id_User | Solde | Type_Compte | code | Prenom   | Login   | Nom    | Num_Tel   | Etat_Type | Mot_de_Passe                             | Type   |
                        +-----------+---------+-------+-------------+------+----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        | 1         | sabayke |  3825 | client      | 3    | elmoctar | sabayke | brahim | 773244176 | Actif     | 482f7629a2511d23ef4e958b13a5ba54bdba06f2 | client |
                        +-----------+---------+-------+-------------+------+----------+---------+--------+-----------+-----------+------------------------------------------+--------+
                        1 row in set (0.00 sec)
                        
                        mysql>


                        maintenant j'ai combiné votre requête et la mienne

                        mysql> SELECT COUNT(*) as nbre_transaction 
                        FROM transaction 
                        INNER JOIN compte ON Id_Compte_1 = Id_Compte 
                        INNER JOIN utilisateur ON Id_User = Login 
                        WHERE Num_Tel = 773244176
                            -> ;
                        +------------------+
                        | nbre_transaction |
                        +------------------+
                        |                2 |
                        +------------------+
                        1 row in set (0.00 sec)
                        
                        mysql>

                        Et voilà ça marche

                        Merci Mr Benzouye tu es le meilleurrrrrrrrrrrrrrrrrrrrrrr :) :) :)



                        Enfin si ces deux requêtes te retournent quelque chose, mais que le COUNT donne 0 c'est qu'aucune transaction n'existe pour ces comptes ...



                        • Partager sur Facebook
                        • Partager sur Twitter

                        comment utiliser count avec inner join

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown