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

PHP & Base de données Discussion :

Faire un SELECT COUNT sur une clé primaire composée de 3 colonnes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 92
    Points : 40
    Points
    40
    Par défaut Faire un SELECT COUNT sur une clé primaire composée de 3 colonnes
    BONJOUR

    comment faire select count sur une clef primaire composée de 3 colonnes.
    j'ai fait
    select COUNT(champ1) ça a bien marché
    mais moi je veux compter sur 3 champs, car la clef primaire est composée de 3 champs:

    champ1, champ2, champ3

    S'il vous plais comment je calcule le nombre avec COUNT sur 3champs.

    voila ma fonction qui marche bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function stat_cen_ann_fil($code_crefd,$iannee,$fil)   // calcul nombre d'eleves pour 1 centre , 1 code , 1 annee 
    {
     $db1=mysql_select_db("ma_base");
     $sql="select COUNT(ENPR) AS nbr from Table1 where IANNEE='$iannee' AND ICODE=$fil"; 
     $res=mysql_query($sql);
     if ($res==FALSE)
    echo mysql_error();
    $line=mysql_fetch_array($res);
    $compt=$line['nbr'];
    return($compt);		
    mysql_free_result($compt);
    }
    moi je veux au lieu de ENPR je met 3 champs

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,

    Un simple
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Count(*) AS nbr ...
    devrait suffire.

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    merci pour la reponse ça fonctionne bien

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Oishiiii Voir le message
    Bonjour,

    Un simple
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Count(*) AS nbr ...
    devrait suffire.
    J'ai le même souci, je crois qu'il demandait au cas où on avait à faire a une clef composée (par exemple de deux champs) !

    Dans mon cas :
    je voudrai avoir la liste des ouvrages avec le nombre de mots clefs qui leurs sont directement attachés
    (0 s’il n’y a pas de mot clef).

    alors je voudrais avoir les ouvrages en comptant le nombre de mots clefs pour chacun, j'ai fait ça : SELECT TITRE , COUNT(*) FROM OUVRAGE NATURAL JOIN A_POUR_MOT_CLE GROUP BY TITRE ;

    Dans A_POUR_MOT_CLE j'ai pour clef composée (idp, ids)...

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 311
    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 311
    Points : 39 678
    Points
    39 678
    Billets dans le blog
    9
    Par défaut
    Bonjour

    On peut utiliser par exemple select count (distinct concat(Col1, Col2, Col3)) from ma_table.
    Ou encore select count (*) from (select distinct Col1, Col2, Col3 from ma_table) as XX.

    Si les 3 colonnes constituent la clef primaire, alors DISTINCT n'est pas requis, puisque par définition, la PK est unique.

    Par ailleurs, trois remarques :

    • dans une table d'une base de données relationnelle, il n'y a pas de champs, mais des colonnes.
      Les champs sont les zones des formulaires de saisie ou des états ;
    • il ne faut jamais utiliser NATURAL JOIN, car c'est très dangereux : si l'une des tables jointes change, la jointure peut également changer et bien évidemment les résultats aussi ;
    • il faut mettre en évidence le code en utilisant les balises prévues à cet effet (symbole # de la barre d'icones).
      J'ai modifié votre message pour les ajouter, mais pensez-y la prochaine fois.

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

Discussions similaires

  1. Comment faire un select avancé sur une table PostgreSql ?
    Par paroparo dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/10/2018, 23h11
  2. Sélection sur une clé primaire composée
    Par defluc dans le forum Requêtes
    Réponses: 7
    Dernier message: 26/05/2015, 14h31
  3. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  4. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00
  5. Réponses: 1
    Dernier message: 23/02/2003, 06h22

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