Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Compter sur deux tables

    23 juin 2010 à 15:35:41

    Bonjour, j'ai plusieurs soucis pour compter, trier et ranger...
    J'ai donc deux tables

    Image utilisateur

    ce qui lie mes tables c'est le code

    en fait c'est le zéro qui me donne le plus de soucis

    voici ce que j'ai fais pour l'instant

    SELECT groupe, code1, code2, grades, id2, COUNT( categorie ) AS categorie1 => le count je ne suis pas sur !
    FROM tables1, tables2
    WHERE code1 = code2
    GROUP BY code2
    ORDER BY id2 ASC => important

    si vous pouviez me donner un coup de main ;)
    et s'il manque quelque chose, demandé moi
    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2010 à 15:56:02

      Premièrement, il me semble qu'une section base de donnée à été réçement ouverte sur le forum. :)

      Ensuite pourrais tu nous expliquer à quoi sert ta requète, que veux tu compter et pourquois ?
      merci ^^
      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2010 à 16:19:43

        houps je n'avais pas vu cette nouvelle section ->
        http://www.siteduzero.com/forum-81-406 [...] -donnees.html
        si un modo peu la déplacer ;)

        alors pour cette requete, je veux :
        compter le nombre de 'categorie' dans chaque 'groupe'
        grouper par 'groupe' :)
        trier par l'id2'

        et surtout afficher les zéro, des 'groupe'
        n'ayant meme pas de 'categorie'
        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2010 à 16:25:36

          quand tu dis

          Citation : athome

          afficher les zéro, des 'groupe'



          les zéros correspondent à quoi ? au faite qu'il n'y ai aucune catégorie dans le groupe ?

          enfin, ce que tu désire afficher c'est le résultat d'un COUNT (pour compter) et les zéro.
          tu à donc déjà trop de champs dans ton select.

          pourrait on avoir la structure de ta table stp ? (liste des champs ... etc) car l'image ne s'affiche pas chez moi ^^ désolé.
          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2010 à 16:38:35

            pour les zéro, oui je veux savoir combien il y a de
            categorie dans le groupe et s'il n'y en a pas afficher "0"

            voici en gros la table, je l'ai simplifié pour y voir plus clair ;)


            table1              table2
            
            id1 code1 categorie    id2 code2 groupe
             1   001      a         1  001    1
             2   002      b         2  002    1
             3   003      c         3  003    1
             4   004      d         4  004    2
             5   005      e         5  005    2
             6   006      b         6  006    2
             7   007      a         7  007    3
             8   008      a         8  008    3
             9   009      c         9  009    3
            
            je voudrais arriver à :
            
            groupe categorie  nombre
               1       a         1
               2       a         0
               3       a         2
            
            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2010 à 16:48:09

              SELECT table2.groupe, COUNT(table1.categorie) AS nombre
              FROM table2, table1
              WHERE table1.code=table2.code2
              GROUP BY table1.groupe
              ORDER BY table2.id2 ASC
              


              ceci devrais marcher je pense :)
              dis moi si le résultat concorde avec ce que tu cherchais ^^
              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2010 à 16:48:38

                Avec le peu d'élément que tu donnes je dirais peut-être
                SELECT groupe, categorie, COUNT(categorie) AS nombre
                FROM table1
                LEFT JOIN table2 ON code1 = code2
                GROUP BY groupe, categorie
                


                Ko Reika, ce qui serait pas mal ce serait d'utiliser la norme SQL 2003 et pas 83.
                • Partager sur Facebook
                • Partager sur Twitter
                  23 juin 2010 à 16:51:40

                  désolé Zazou :/ c'est ce que j'apprend en cours

                  j'ai encore un peu de mal avec la norme 2003, donc quand je donne une solution je préfère proposer la syntaxe ou je suis le plus à l'aise pour le momment ^^

                  mais tu n'as pas tord :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2010 à 17:04:55

                    Citation : Ko Reika

                    SELECT table2.groupe, COUNT(table1.categorie) AS nombre
                    FROM table2, table1
                    WHERE table1.code=table2.code2
                    GROUP BY table1.groupe
                    ORDER BY table2.id2 ASC
                    



                    ceci devrais marcher je pense :)
                    dis moi si le résultat concorde avec ce que tu cherchais ^^



                    SELECT table2.groupe, COUNT(table1.categorie) AS nombre
                    FROM table2, table1
                    WHERE table1.code=table2.code2
                    GROUP BY table2.groupe
                    ORDER BY table2.id2 ASC
                    


                    ce code m'indique toutes les categorie par groupe
                    et je voudrais pouvoir sélectionner une seule categorie
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 juin 2010 à 17:07:24

                      Bah rajoute un WHERE, t'es grand non tu veux pas qu'on te prenne par la main non plus ? o_O
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 juin 2010 à 17:11:26

                        Citation : Zazou

                        Avec le peu d'élément que tu donnes je dirais peut-être

                        SELECT groupe, categorie, COUNT(categorie) AS nombre
                        FROM table1
                        LEFT JOIN table2 ON code1 = code2
                        GROUP BY groupe, categorie
                        



                        Ko Reika, ce qui serait pas mal ce serait d'utiliser la norme SQL 2003 et pas 83.



                        si tu veux plus d'élément demande moi, mais je pensais qu'avais ces infos cela serait suffisant
                        sinon, j'ai testé ta requete et mysql me sort des chiffres mais je ne vois pas à quoi ils correspondent

                        Citation : Zazou

                        Bah rajoute un WHERE, t'es grand non tu veux pas qu'on te prenne par la main non plus ?



                        autant pour moi j'ai été trop vite et avec un WHERE ça fonctionne presque bien
                        sauf qu'il n'y a pas tous les groupe de listé, et donc le zéro en face des groupe
                        ou il n'y a pas pas cette categorie de présente
                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juin 2010 à 17:16:46

                          Bah je sais pas non plus en fait, ce qui serait intéressant c'est d'avoir l'export de tes tables et un vrai cas concret de ce que tu veux récupérer (avec tous les éléments nécessaires pour réaliser la requête pas juste des bribes)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 juin 2010 à 17:25:26

                            je ne peux pas donner plus d'info sur les données

                            sinon j'ai cherché avec des IFNULL et d'autre choses...
                            mais j'ai toujours ce problème pour récupérer
                            ces groupe d'ou il n'a pas pas de catégorie

                            tu n'aurais une idée vers quoi me diriger ?

                            merci de votre aide, en espérant trouver une solution ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 juin 2010 à 17:39:11

                              Oui j'ai une idée, mais pour ça j'ai besoin de l'export de ta table ! Au moins le CREATE TABLE et suffisement d'INSERT INTO pour trouver la bonne requête.0 Tu n'auras aucune réponse siç tu ne coopères pas.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 juin 2010 à 17:47:25

                                j'aimerai bien t'en donner plus, mais dans ces données
                                il y a des nom, prénom...... et je ne veux absolument
                                pas sortir ces données

                                et voici les CREATE TABLE

                                CREATE TABLE IF NOT EXISTS `table1` (
                                  `id1` int(11) NOT NULL auto_increment,
                                  `nom` text NOT NULL,
                                  `prenom` text NOT NULL,
                                  `categorie` text NOT NULL,
                                  `code1` text NOT NULL,
                                  PRIMARY KEY  (`id1`)
                                ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3022 ;
                                


                                CREATE TABLE IF NOT EXISTS `table2` (
                                  `id2` int(11) NOT NULL auto_increment,
                                  `groupe` text NOT NULL,
                                  `code2` text NOT NULL,
                                  PRIMARY KEY  (`id2`)
                                ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=617 ;
                                
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 juin 2010 à 17:50:48

                                  Bah tu te débrouilles pour les effacer ou les remplacer par des trucs bidon, je m'en fiche moi des noms.
                                  Mais je vais pas m'amuser à créer des insertions pour ton plaisir.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 juin 2010 à 10:07:24

                                    bon voici les INSERT INTO
                                    alors voilà si tu peux m'aider à résoudre ce probleme ;)


                                    INSERT INTO `table1` (`id1`,`nom`, `prenom`, `categorie`, `code1`) VALUES
                                    (1, 'durant', 'andre', 'a', '001',),
                                    (2, 'dupont', 'Jean', 'b', '002'),
                                    (3, 'martin', 'Elodie', 'c', '003'),
                                    (4, 'blanc', 'Dominique', 'd', '004'),
                                    (5, 'rouge', 'Monique', 'e', '005'),
                                    (6, 'vert', 'Francois', 'b', '006'),
                                    (7, 'bleu', 'Fabien', 'a',  '007'),
                                    (8, 'noir', 'Jean', 'a', '008'),
                                    (9, 'blanc', 'Marie', 'c', '009'),
                                    



                                    INSERT INTO `table2` (`id2`, `groupe`, `code2`) VALUES
                                    (1, '1', '001'),
                                    (2, '1', '002'),
                                    (3, '1', '003'),
                                    (4, '2', '004'),
                                    (5, '2', '005'),
                                    (6, '2', '006'),
                                    (7, '3', '007'),
                                    (8, '3', '008'),
                                    (9, '3', '009'),
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      24 juin 2010 à 14:09:51

                                      Et voilà !

                                      SELECT groupe, (SELECT COUNT(categorie) FROM table1 WHERE categorie='a' AND id1=id2) AS cat
                                      FROM table2 t2
                                      GROUP BY groupe
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 juin 2010 à 15:32:42

                                        et bien merci beaucoup, c'est exactement ce que je voulais :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 juillet 2010 à 16:01:35

                                          houpss ... et me revoilà
                                          ma table c'est un peu compliqué
                                          et des sous catégories son arrivé, appelé 'service' dans la table2 !
                                          le soucis c'est qu'il y a des service qui on le même nom !!!
                                          voici la requete, et je voudrais donc regrouper par 'service'

                                          SELECT t2.id2,service,
                                          (SELECT COUNT(categorie)
                                          FROM table1
                                          WHERE categorie='a' AND code1=code2) AS cat
                                          FROM table2 t2
                                          WHERE t2.groupe='1'
                                          ORDER BY t2.id2 ASC

                                          j'ai bien tenté ceci :

                                          SELECT t2.id2,service,
                                          (SELECT COUNT(categorie)
                                          FROM table1
                                          WHERE categorie='a' AND code1=code2) AS cat
                                          FROM table2 t2
                                          WHERE t2.groupe='1'
                                          GROUP BY service
                                          ORDER BY t2.id2 ASC

                                          cela à bien regroupé les 'service'
                                          mais sans comptabiliser l'ensemble des 'cat' ayant le meme nom de service'

                                          cela ne doit pas etre grand chose mais je but sur ce petit truc
                                          merci de votre aide :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 juillet 2010 à 16:28:50

                                            Re-Bonjour :)

                                            Et comme d'habitude .. je n'ai pas tout compris :D

                                            pourrais tu nous éclaircir ce que tu cherche à faire ? (clairement)

                                            d'après ce que j'ai compris, tu à rajouté un champ dans l'une de tes tables (nommé services)
                                            et donc tu voudrais savoir :
                                            combien de catégorie "a" sont présente dans les différents groupes ET différents services ?
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 juillet 2010 à 16:38:42

                                              c'est exactement ça ;)

                                              je voudrais toujours savoir le nombre de categorie 'a' dans chaque 'groupe'
                                              mais maintenant je voudrais afficher par 'service' qui sont des sous-groupe de 'categorie'
                                              le soucis c'est qu'il y a des 'service' portant le meme nom et ayant un code1 qui n'égale pas au code2 !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 juillet 2010 à 16:51:01

                                                donc mettons qu'il y ai 3 service dans le groupe 1 on pourrais les nommer service 1.1 service 1.2 service 1.3 ? :o

                                                du coup le groupe 1 possède des sous groupes appelé services ? Pour lequels tu souhaites savoir combien de catégorie "a" ils possèdent ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 juillet 2010 à 17:04:13

                                                  heu je ne vois pas trop ou tu veux aller :(

                                                  id2 	service 	       cat
                                                  18 	direction       	0
                                                  19 	secrétariat     	15
                                                  20 	technicien 	        46
                                                  21 	technicien 	        5
                                                  22 	unité           	19
                                                  23 	unité           	1
                                                  24 	Bureau Central    	1
                                                  25 	Bureau Central  	2
                                                  26 	encadrement      	2
                                                  27 	encadrement     	4
                                                  


                                                  en gros, voilà ce que j'obtiens
                                                  et je voudrais donc regrouper les 'service'
                                                  tout en additionnant les totaux

                                                  suivi du topic ici :
                                                  http://www.siteduzero.com/forum-83-541 [...] un-count.html
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 juillet 2010 à 17:09:06

                                                    Bonjour, rien a voir avec le sujet en cours désolé.
                                                    Je voulais savoir, comment fais_tu pour obtenir les entrées de ta bdd comme tu l'a affiché dans le code actionscript.

                                                    merci :)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    [MySQL] Compter sur deux tables

                                                    × 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