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

Langage SQL Discussion :

SQl Compter chaque table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut SQl Compter chaque table
    Bonjour
    je suis débutant en sql

    Comment compter le contenu dans chaque table?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from etudiant,famille,salarié,cadre
    mais cela donne le résultat faux.
    chaque table ont la même colonne (id, nom, prenom, adresse...)

    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Salut

    voici la requette que je vous propose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT COUNT(*) as totalTable FROM(SELECT NOM="" AS comptage
    FROM Archanne)
    GROUP BY comptage

  3. #3
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,

    Il est normal que le résultat soit faux, sans jointure vous faites un produit cartésien.

    Vous pouvez faire comme ça :

    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
    17
    select sum(nb_e) nb_etudiant, sum(nb_f) nb_famille, sum(nb_s) nb_salarie, sum(nb_c) nb_cadre from
    (select 
        1 nb_e,
        0 nb_f,
        0 nb_s,
        0 nb_c
     from etudiant
    union all select
        0,1,0,0
     from famille
    union all select
        0,0,1,0
     from salarie
    union all select
        0,0,0,1
     from cadre
    );
    petit exemple :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    SQL> create table e as select 'e1' id_e from dual;
     
    Table created.
     
    SQL> insert into e values ('e2');
     
    1 row created.
     
    SQL> create table f as select 'f1' id_f from dual;
     
    Table created.
     
    SQL> insert into f values ('f2');
     
    1 row created.
     
    SQL> insert into f values ('f3');
     
    1 row created.
     
    SQL> commit;
     
    Commit complete.
     
    SQL> create table s as select 's1' id_s from dual;
     
    Table created.
     
    SQL> create table l (id_l varchar2(2));
     
    Table created.
     
    SQL> 
    SQL> 
    SQL> select sum(nb_e) nb_e, sum(nb_f) nb_f, sum(nb_s) nb_s, sum(nb_l) nb_l from
      2  (select 
      3      1 nb_e,
      4      0 nb_f,
      5      0 nb_s,
      6      0 nb_l
      7   from e
      8  union all select
      9      0,1,0,0
     10   from f
     11  union all select
     12      0,0,1,0
     13   from s
     14  union all select
     15      0,0,0,1
     16   from l
     17  );
     
         NB_E      NB_F      NB_S      NB_L
    --------- --------- --------- ---------
            2         3         1         0

    abdallahi pouvez vous m'expliquer votre requête svp ?
    Je penche, donc je suis

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    oups je esuis un peu perdu
    chrifo, c est quoi les chiffres 1,0,0,1?

    abdallahi , j'aimerai un peu d'explication aussi si c'est possible

    merci à vous

  5. #5
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Citation Envoyé par forst
    chrifo, c est quoi les chiffres 1,0,0,1?
    rien de sorcier, en fait la requête imbriquée renvoie 1 enregistrement pour chaque ligne de chaque table, avec la valeur 1 pour la table concernée, et 0 pour les autres. Il reste à faire la somme de tout ça pour avoir le nombre d'enregistrement ... Cf exemple
    Vous avez testé cette requête sur votre base ?
    Je penche, donc je suis

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    je vais faire un test

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    La requete que j'ai faite a pour obctif de compter le nombre des enregistrements d'une Seule table
    donc y apas de jointure ni produit cartesien

    ma requte contient la sou requte suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT NOM="" AS nomt
    FROM matable)
    l'objectif de sette requette est de mettre la memme valeur dan la colonne nom ppour faire un regroupement
    et en suite on fait le count sur cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) from (SELECT NOM="" AS nomt
    FROM matable)
    GROUP BY NOMT

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par abdallahi
    La requete que j'ai faite a pour obctif de compter le nombre des enregistrements d'une Seule table
    donc y apas de jointure ni produit cartesien

    ma requte contient la sou requte suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT NOM="" AS nomt
    FROM matable)
    l'objectif de sette requette est de mettre la memme valeur dan la colonne nom ppour faire un regroupement
    et en suite on fait le count sur cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) from (SELECT NOM="" AS nomt
    FROM matable)
    GROUP BY NOMT
    comment faire avec plusieurs table?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    quel est ton objectif exactement ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    exemple
    salarié = 2 , famille = 1 , etudiant 1 , cadre = 0
    en total cela fait 4 personnes.
    si tu vois ce que je veux dire

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    quelle est la stricture de ta base
    les tables que tu a avec les chapms de chaque table

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 77
    Points : 37
    Points
    37
    Par défaut
    ils ont tous les mêmes champs (id, nom, prenom, adresse, code postal...)

Discussions similaires

  1. [SQL SERVER 2005]créer un trigger pour chaque table de chaque DB
    Par Kropernic dans le forum Développement
    Réponses: 14
    Dernier message: 23/02/2010, 12h56
  2. Réponses: 5
    Dernier message: 30/10/2008, 16h09
  3. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 17h22
  4. [SQL2K]Compter les lignes de chaque table.
    Par Mamilie dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 28/03/2007, 08h03
  5. SQL : compter les champs d'une table
    Par Bboy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2005, 16h02

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