Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    mars 2009
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : mars 2009
    Messages : 190
    Points : 30
    Points
    30

    Par défaut distinct sur deux champs

    Salut,
    Je veux afficher sur mon tableau des noms de médecin mais en évitant les doublons, alors j'ai utilisé cette requête :
    Code :
    1
    2
    3
    4
    5
    SELECT DISTINCT id,nom 
    FROM visite 
    WHERE id_representant = '23' 
      AND date_visite BETWEEN '2012-01-01' AND '2012-12-01' 
    ORDER BY medecin ASC
    Le problème, c'est que dans l'affichage,il m'affiche bien les id uniques, mais non les noms. Alors, je veux savoir comment faire pour que le DISTINCT inclut aussi les noms ?
    Sachant que j'en ai besoin de distinct sur les deux champs.
    Merci d'avance pour votre aide.
    y a pas d'autre solution..il faut apprendre !!

  2. #2
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 747
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 13 747
    Points : 22 930
    Points
    22 930

    Par défaut

    DISTINCT opère sur toutes les colonnes du SELECT.

    Je suppose que id est l'identifiant de la visite et qu'un médecin peut faire plusieurs visites donc être présent plusieurs fois dans la table mais comme chaque identifiant de visite est unique, ce DISTNCT est inutile car il va retourner toutes les lignes de la tables.

    Puisque vous voulez les médecins et non pas les visites, supprimez id du SELECT.

    Au passage, au lieu du nom du médecin dans la table des visites, vous devriez avoir une clé étrangère référençant l'identifiant du médecin de la table des médecins. Laisser le nom dans la table des visites est le meilleur moyen d'avoir un jour plusieurs fois le même médecin aec des orthographes différentes, et donc plusieurs fois le même médecin dans votre requête.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    mars 2009
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : mars 2009
    Messages : 190
    Points : 30
    Points
    30

    Par défaut

    La requête en haut m'affiche bien id non en double , mais les noms si!
    y a pas d'autre solution..il faut apprendre !!

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2011
    Messages : 89
    Points : 60
    Points
    60

    Par défaut

    Ce que l'on essaie de vous dire, c'est que si la colonne "Id" est la clé primaire (identifiants uniques) de votre table "VISITE", il est donc inutile de vouloir supprimer des doublons dans une colonne qui ne possède obligatoirement pas de doublons !

    Pour ce qui est de la colonne "Nom", c'est une colonne qui peut bien entendu posséder des doublons et donc votre requête doit simplement ressembler à cela :

    Code :
    1
    2
    3
    4
    5
    SELECT DISTINCT nom 
    FROM visite 
    WHERE id_representant = '23' 
      AND date_visite BETWEEN '2012-01-01' AND '2012-12-01' 
    ORDER BY medecin ASC
    Cette manière de faire est à utiliser dans le cas où la colonne "Id" est réellement l'identifiant de la table. A vous de le confirmer.

  5. #5
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    mars 2009
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : mars 2009
    Messages : 190
    Points : 30
    Points
    30

    Par défaut

    c'est pas l'id de cette table,mais d'une autre
    en tout cas merci,j'ai résolu le problème
    y a pas d'autre solution..il faut apprendre !!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •