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 :

Compter avec 2 tables sous-requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Compter avec 2 tables sous-requête
    Bonjour,

    J'ai 2 tables en SQL et je suis hébergé chez free qui n'accepte pas les clés étrangères ni la fonction SQL "INTERSECT":

    • eleves1112 avec les champs "Cours" (text) et club(entier)
    • clubs1112 avec les champs "id" (entier) et ATCLUB (entier)



    je voudrais compter le nombre de clubs qui ont des élèves 'D1' (eleves1112.cours) pour 1 appartenance au '95' (clubs.ATCLUB) sachant que pour 1 même club "eleves1112.club = clubs1112.id"

    j'ai donc à combiner quelque chose comme les 2 requêtes suivantes qui fonctionnent séparemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $Rclub111295sco ="SELECT COUNT(id) AS BNCLUB111295SCO  FROM clubs1112 WHERE ATCLUB = 95 " ?>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php  $Rclub111295sco ="SELECT eleves1112.Cours, eleves1112.club, clubs1112.id FROM eleves1112, clubs1112 WHERE eleves1112.Cours = 'D1'AND eleves1112.club = clubs1112.id" ?>
    j'essaie avec les sous requêtes et je n'y arrive pas
    Quelqu'un a-t-il une solution ?
    D'avance merci

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 9
    Points
    9
    Par défaut 1 possibilité
    bien sur je peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    mysql_select_db($database_sqlfree, $sqlfree);
    $query_Rclub111295sco = "SELECT eleves1112.Cours, eleves1112.club, clubs1112.id, clubs1112.ATCLUB FROM eleves1112, clubs1112 WHERE clubs1112.ATCLUB= '95' AND eleves1112.Cours = 'D1' AND clubs1112.id = eleves1112.club ";
    $Rclub111295sco = mysql_query($query_Rclub111295sco, $sqlfree) or
     die(mysql_error());
    $row_Rclub111295sco = mysql_fetch_assoc($Rclub111295sco);
    $totalRows_Rclub111295sco = mysql_num_rows($Rclub111295sco);
    ?>
    et récupérer totalRows
    mais je pense qu'il y a plus performant à faire avec "COUNT"
    et en plus la je récupère le nombre d'élèves et non pas le nombre de clubs DISTINCT paramètre qui m'est refusé dans la commance ci-dessus en mettant "DISTINCT clubs1112.club"

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    quelque chose comme ça devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select count(*)
    from clubs1112 a
    where a.ATCLUB = 95 and exists (select 1 from eleves1112 b where a.id = b.club)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    merci cela fonctionne (en ajoutant cours = 'D1')
    et c'est bien sûr plus rapide que ce que j'avais fait sans le count car 1 seul enregistrement retourné. Ce qu'il faut éviter de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT(club), eleves1112.Cours, clubs1112.id, clubs1112.ATCLUB, eleves1112.club 
    FROM eleves1112, clubs1112 
    WHERE clubs1112.ATCLUB= '95' AND eleves1112.Cours = 'D1' AND clubs1112.id = eleves1112.club

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

Discussions similaires

  1. Requête de calcul de solde avec une table sous DB2
    Par lesultan2007 dans le forum DB2
    Réponses: 2
    Dernier message: 18/06/2015, 13h24
  2. Compter avec condition dans une requête
    Par CHINAILLON dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 10/04/2008, 14h50
  3. problème de bordure avec les tables sous IE
    Par Silvia12 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 28/09/2007, 10h45
  4. rapport avec condition de sous requête
    Par aigle_ma dans le forum Deski
    Réponses: 4
    Dernier message: 18/06/2007, 11h49
  5. [Débutant] Requête SELECT avec max et sous-requête
    Par joefou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 14h28

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