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 :

COUNT sur plusieurs tables différentes


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Blade
    Profil pro
    Inscrit en
    Août 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 291
    Points : 335
    Points
    335
    Par défaut COUNT sur plusieurs tables différentes
    Salut,

    J'explique mon soucis.
    J'ai 4 tables différentes : table1, table2, table3, table4

    Dans ces 4 tables, j'ai un champs identique : poster_id

    J'aimerais compter le nombre total sur les 4 tables dont poster_id est le meme.

    La requete simple COUNT ne fonctionne pas avec table1, table2 ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) 
      FROM table1,table2,table3,table4 
      WHERE poster_id ='toto'

    Merci de m'éclairer

  2. #2
    Membre actif
    Avatar de Hatchepsout
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par Blade Voir le message
    Salut,

    J'explique mon soucis.
    J'ai 4 tables différentes : table1, table2, table3, table4

    Dans ces 4 tables, j'ai un champs identique : poster_id

    J'aimerais compter le nombre total sur les 4 tables dont poster_id est le meme.

    La requete simple COUNT ne fonctionne pas avec table1, table2 ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb_ressource = mysql_query("SELECT COUNT(*) FROM table1,table2,table3,table4 WHERE poster_id ='toto'");

    Merci de m'éclairer

    bonjour ce que je connais c'est que COUNT permet de compter le nombre de lignes incluses dans une seule table


    essaye de faire une sélection de count(*) de chaque table après tu fait un UNION entre les tables .


    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     select sum (valeur)
     from (
       select count(*) val from table 1
       union all
      select count(*) val from table 2
      union all
      select count(*) val from table 3
     ..
    ..
    .. 
    )
    ++

  3. #3
    Membre averti Avatar de Blade
    Profil pro
    Inscrit en
    Août 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 291
    Points : 335
    Points
    335
    Par défaut
    Bonjour

    Je n'y parviens toujours pas.

    Voici ce que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $nb_ressource = "SELECT sum (*)
     FROM (
    SELECT count(*)  FROM $table_tpl WHERE poster_id = '$ploginy'
    union ALL
    SELECT count(*)  FROM $table_rangs WHERE poster_id = '$ploginy'
    union ALL
    SELECT count(*)  FROM $table_folders WHERE poster_id = '$ploginy'
    union ALL 
     
    )";
    $query = mysql_query($nb_ressource) or die ('Erreur : '.mysql_error() );
    et l'erreur retourné est :
    Erreur : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM ( SELECT count(*) FROM template WHERE poster_id = '

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par Blade Voir le message
    Bonjour

    Je n'y parviens toujours pas.
    Avec une sous-requête dans le FROM, l'alias est obligatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $nb_ressource = "SELECT sum (*)
     FROM (
    SELECT count(*)  FROM $table_tpl WHERE poster_id = '$ploginy'
    union ALL
    SELECT count(*)  FROM $table_rangs WHERE poster_id = '$ploginy'
    union ALL
    SELECT count(*)  FROM $table_folders WHERE poster_id = '$ploginy'
    union ALL 
    
    ) AS toto ";
    $query = mysql_query($nb_ressource) or die ('Erreur : '.mysql_error() );

  5. #5
    Membre averti Avatar de Blade
    Profil pro
    Inscrit en
    Août 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 291
    Points : 335
    Points
    335
    Par défaut
    Ca doit correspondre a quoi "toto" ?

    Désolé mais en SQL j'ai que les bases et la ca dépasse mes compétences.

    Je sais même pas si 'est possible ce que je veut faire car SUM compte un champs précis, moi je veut le nombre d'enregistrement total sur 4 tables pour un même membre...

  6. #6
    Membre actif
    Avatar de Hatchepsout
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par Blade Voir le message
    Ca doit correspondre a quoi "toto" ?

    Désolé mais en SQL j'ai que les bases et la ca dépasse mes compétences.

    Je sais même pas si 'est possible ce que je veut faire car SUM compte un champs précis, moi je veut le nombre d'enregistrement total sur 4 tables pour un même membre...
    toto c'est l'alias

    L’alias de table s’obtient en plaçant directement un alias après le nom de table dans la clause FROM Les alias sont très utiles lorsque vous souhaitez obtenir des informations de deux tables séparées (le terme technique est 'perform joins'). L’avantage d’utiliser un alias de table au moment d’exécuter des commandes de jointure est manifeste.

  7. #7
    Membre actif
    Avatar de Hatchepsout
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 222
    Points
    222
    Par défaut
    si tu veut de plus tu a tous sous DVP

    http://sgbd.developpez.com/cours/#coursql




    ++ bonne soirée

  8. #8
    Membre averti Avatar de Blade
    Profil pro
    Inscrit en
    Août 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 291
    Points : 335
    Points
    335
    Par défaut
    Meme en mettant un alias j'ai toujours rien

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Il faut que tu enlèves le dernier UNION ALL (je ne l'avais pas vu, désolé).

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

Discussions similaires

  1. Statistique count sur plusieurs tables
    Par nsanabi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/03/2009, 11h23
  2. [Oracle] Count(*) sur plusieurs tables
    Par darkangel23fr dans le forum SQL
    Réponses: 2
    Dernier message: 16/02/2009, 11h32
  3. Count sur plusieurs tables
    Par Remedy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2006, 00h41
  4. Réponses: 8
    Dernier message: 17/05/2006, 14h32
  5. Somme de 3 COUNT() sur 3 tables différentes
    Par PyRoFlo dans le forum Langage SQL
    Réponses: 9
    Dernier message: 13/08/2004, 18h36

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