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 et SQL. Discussion :

Selectionner des enregistrements avec une seule valeur


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué Avatar de ecarbill
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Points : 146
    Points
    146
    Par défaut Selectionner des enregistrements avec une seule valeur
    Bonjour à tous,
    J'ai 2 tables :
    personne(matrcule,nom,prenom)
    contact(matriculepersonne,contact)

    Une personne peut avoir plusieurs contact. Mais je veux écrire une requête qui ramène la liste des personnes avec un seul contact (Même si la personne en a plusieurs).

    Pouvez-vous me donner un coup de main s'il vous plait ?

    Merci d'avance
    Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Bonjour,

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select personne.*, min(contact) from personne left join contact...
    On peut aussi utiliser dlookup ou dmin...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre habitué Avatar de ecarbill
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Points : 146
    Points
    146
    Par défaut
    Merci beaucoup nico84, je jette un coup d’œil dessus
    Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 621
    Points : 56 866
    Points
    56 866
    Billets dans le blog
    40
    Par défaut
    Bonsoir Enstein et Nico,

    Citation Envoyé par ecarbill Voir le message
    ... une requête qui ramène la liste des personnes avec un seul contact (Même si la personne en a plusieurs).
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT matriculepersonne FROM contact
    GROUP BY matriculepersonne
    HAVING count(*)=1

    non ?

  5. #5
    Membre habitué Avatar de ecarbill
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Points : 146
    Points
    146
    Par défaut
    Bonjour à tous, suite à vos conseils, voici finalement comment j'ai fais le requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT p.matricule , p.nom, p.prise_service, a.date_adhesion, min(c.contact) as contact, min(e.email) as email
    FROM ((personne p LEFT JOIN contact c ON p.matricule = c.matricule) LEFT JOIN email e ON p.matricule = e.matricule) LEFT JOIN adhesion a ON p.matricule = a.matricule
    GROUP BY p.matricule, p.nom, p.prise_service, a.date_adhesion ;
    Y a t-il des commentaires ? Merci
    Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Avec cette requête le mail ne sera pas nécessairement celui du contact !
    Pour remonter plusieurs champs c'est un peu plus compliqué il faut par exemple mettre le min dans le where :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from a left join b
    where isnull(b.contact) or b.contact = (select min(b.contact) from...)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre habitué Avatar de ecarbill
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Points : 146
    Points
    146
    Par défaut
    J'ai pas bien compris pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le mail ne sera pas nécessairement celui du contact
    Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    La requete choisit le plus petit contact et le plus petit mail par ordre alphabétique, indépendamment l'un de l'autre...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

Discussions similaires

  1. [AC-2010] Ouvrir un formulaire avec les enregistrements d'une seule valeur
    Par philenull dans le forum VBA Access
    Réponses: 18
    Dernier message: 13/09/2013, 08h31
  2. selectionner des enregistrements d'une facon aléatoire
    Par waldoun dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2007, 20h00
  3. changer la couleur des label avec une seul clique
    Par aliwassem dans le forum Delphi
    Réponses: 4
    Dernier message: 18/10/2006, 22h27
  4. Réponses: 13
    Dernier message: 05/09/2006, 16h25
  5. [Hibernate] Set avec une seule valeur
    Par neuromencien dans le forum Hibernate
    Réponses: 6
    Dernier message: 15/05/2006, 16h49

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