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

Requêtes MySQL Discussion :

distinct sur deux champs


Sujet :

Requêtes MySQL

  1. #1
    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 : 63
    Points
    63
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    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 Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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
    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 : 63
    Points
    63
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 103
    Points : 115
    Points
    115
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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 : 63
    Points
    63
    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.

Discussions similaires

  1. Fonctions sur deux champs distincts
    Par Jordan62 dans le forum jQuery
    Réponses: 4
    Dernier message: 25/02/2014, 10h38
  2. COUNT DISTINCT sur deux champs
    Par Ceubex dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/01/2014, 15h11
  3. Requête sur deux champs couplée à un DISTINCT ?
    Par phil59500 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/01/2010, 22h47
  4. [Débutant] Distinct sur deux champs
    Par Machine Head dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/12/2007, 15h50
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 18h26

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