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 :

Un peu d'aide sur une requête (simple, je pense)


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Points : 504
    Points
    504
    Par défaut Un peu d'aide sur une requête (simple, je pense)
    Salut à tous,

    J'ai besoin d'un peu d'aide sur une requête qui paraîtra surement très simple pour la majorité d'entre vous

    Table : Comptes
    Compte Client
    123 1
    123 2
    456 3
    789 5

    Table : Groupes
    Client Groupe
    1 1
    2 1
    3 2
    4 2
    5 3

    Je souhaite récupérer les comptes de la table "Comptes" uniquement lorsque tous les clients d'un même groupe apparaissent pour un même compte. Avec l'exemple ça paraîtra bien plus simple :

    - Le groupe 1 est composé du client 1 et 2. Ces 2 clients apparaissent dans la table "Comptes" pour le compte 123 ==> Je récupère le compte 123
    - Le groupe 2 est composé du client 3 et 4 dans la table "Groupes". Un seul de ces deux clients est lié au compte 456 ==> Je ne récupère pas le compte 456
    - Le groupe 3 est composé d'un unique client 5. Ce client est lié au compte 789 dans la table "Comptes" ==> Je récupère le compte 789.

    Merci pour l'aide !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 289
    Points : 13 001
    Points
    13 001
    Par défaut
    Bonjour,
    Un début de piste:
    Il faut récupérer les comptes pour lesquels il existe un client c1, et pour lesquels il n'existe pas de client c2 avec un groupe différent.
    Il ne reste plus qu'à faire la requête, avec un NOT EXIST, une jointure externe...

    Tatayo.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Points : 504
    Points
    504
    Par défaut
    Je crois que ça doit pas être aussi simple que je le pensais en fait

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Voici une approche, probablement pas la meilleure.
    En partant du postulat que les couples (compte,client) et (client,groupe) des 2 tables sont uniques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select distinct c2.compte
      from comptes c2
      join groupes g2 on g2.client = c2.client
     where g2.groupe in (select g.groupe
                           from groupes g
                           left join comptes c on c.client = g.client
                          group by g.groupe
                         having count(g.client) = count(c.client)
                         )

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 922
    Points : 51 717
    Points
    51 717
    Billets dans le blog
    6
    Par défaut
    Il s'agit d'un cas de division relationnelle; À me lire : http://sqlpro.developpez.com/cours/divrelationnelle/

    A +

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Points : 504
    Points
    504
    Par défaut
    Super, merci skuatamad, je regarde en partant de ce genre de chose. Merci SQLpro pour le lien.

  7. #7
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par SQLpro Voir le message
    Il s'agit d'un cas de division relationnelle; À me lire : http://sqlpro.developpez.com/cours/divrelationnelle/
    A +
    Je suis un peu perdu Dans La solution audacieuse vous parlez de différence alors que vous utilisez le mot INTERSECT.
    @+

Discussions similaires

  1. [AC-2007] Besoin d'aide sur une requête pourtant simple
    Par teuzadur dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/03/2013, 17h28
  2. Aide sur une requête simple
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/01/2008, 20h21
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 12h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 11h26

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