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

DB2 Discussion :

Requête SQL sur DB2


Sujet :

DB2

  1. #1
    Futur Membre du Club
    Homme Profil pro
    MOE
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MOE
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Requête SQL sur DB2
    Bonjour ,
    J’ai besoin de compter le nombre de personne sur deux tables différentes (nombre de personnes table 1 + nombre de personne table 2) avec une colonne commune (identifiant )
    J’ai essayer avec select count (id) from table1,table2
    Avez vous d’autres idée ? Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT SUM(N)
    FROM
    (
    SELECT COUNT(id) AS N
    FROM  TABLE1
    UNION ALL
    SELECT COUNT(id)
    FROM  TABLE2
    ) AS T;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    MOE
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MOE
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Pour éviter de compter des doublons (les id présent à la fois dans la table et la table 2 ) on peut mettre un distinct sur le count ?
    Merci d’avoir répondu

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 344
    Points : 39 745
    Points
    39 745
    Billets dans le blog
    9
    Par défaut
    Si la colonne "id" est primary key dans l'une des deux tables et foreign key dans l'autre, alors oui, ça a du sens.
    Mais vu qu'ici il s'agit de deux tables des personnes, c'est peu probable. En ce cas la même valeur d'id ne représente pas la même personne dans l'une et l'autre table.

    Donc la réponse est : ça dépend !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    MOE
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MOE
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci d’avoir répondu, je réponds à tes questions
    Le id est une clé étrangère dans les deux tables (Clé primaire d'une autre table ) et chaque personne a un id unique dans la base donc le id des deux tables sont de la même personne

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Si la colonne "id" est primary key dans l'une des deux tables et foreign key dans l'autre, alors oui, ça a du sens.
    Mais vu qu'ici il s'agit de deux tables des personnes, c'est peu probable. En ce cas la même valeur d'id ne représente pas la même personne dans l'une et l'autre table.

    Donc la réponse est : ça dépend !
    Tu as répondu a côté de la plaque car il ne faut pas faire un distinct au niveau du count mais du select et faire le count après !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT COUNT(id)
    FROM
    (
    SELECT id AS N
    FROM  TABLE1
    UNION
    SELECT id
    FROM  TABLE2
    ) AS T;
    A +

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 344
    Points : 39 745
    Points
    39 745
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Tu as répondu a côté de la plaque car il ne faut pas faire un distinct au niveau du count mais du select et faire le count après !
    Non, car je ne répondais pas au "comment" (la requête) mais au quoi (quelle information manipule-t-on) : si les id ont des vies différentes, faire un distinct sur les id n'a pas de sens, et en ce cas inutile de se préoccuper du "comment"

    À propos du comment : puisque l'ID est FK dans les deux tables, une autre solution est de faire une jointure sur la table parente où cette colonne est PK

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2006, 18h35
  2. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 10h59
  3. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 16h32
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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