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 :

Méthode de filtrage


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Méthode de filtrage
    Bonjour

    J'ai trois tables
    Fournisseur - liste des fournisseurs
    Article - liste des article
    commande - Liste des commandes qui associe des fournisseur à des articles.

    Je dois obtenir la liste des fournisseurs qui ont commandé tous les articles.

    ici, un fournisseur = une commande = un article

    La requête ci dessous me renvoie la liste des fournisseurs qui ont commandé au moins un article.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from (fournisseurs inner join commandes on fournisseurs.idf=commandes.idc)
    where commandes.idp
    in
    (
    select idp from produits
    )
    Pourriez-vous me donner des pistes afin que je liste le ou les fournisseurs qui ont commandé tous les articles ?

    Merci

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

    On peut vous donner des pistes sous réserve que vous communiquiez la description de vos tables et index avec les noms exacts des colonnes et leur type.
    A défaut, cherchez dans le forum "division relationnelle"

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Vous trouverez ci-joint le script de création de ma base de données.

    C'est une petite base.

    J'ai exploré le sujet "division relationnelle", il faut que je fasse quelques tests.

    Si après coup, vous avez d'autres pistes...

    Merci

    Cdlt
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    C'est effectivement une division relationnelle !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos retours.

    Le résultat est celui attendu avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select nom from fournisseurs where fournisseurs.fno in(
    select commandes.fno from produits left join commandes on produits.pno=commandes.pno
    group by commandes.fno
    having COUNT(*)=(select COUNT(pno)from produits)
    )
    Je me demande juste s'il n'y a pas un autre moyen de faire que celui que j'ai fait.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Abdel911 Voir le message
    Je dois obtenir la liste des fournisseurs qui ont commandé tous les articles.
    ici, un fournisseur = une commande = un article
    Je ne comprends pas ce que vous voulez dire avec cette égalité

    Citation Envoyé par Abdel911 Voir le message
    Je me demande juste s'il n'y a pas un autre moyen de faire que celui que j'ai fait.
    Si, la division relationnelle (bis) :
    Rechercher la liste des fournisseurs, pour lesquels il n'existe pas d'article pour lequel il n'y a pas de commande de ce fournisseur

Discussions similaires

  1. méthode de filtrage/lissage
    Par gtkill dans le forum MATLAB
    Réponses: 5
    Dernier message: 09/06/2009, 22h57
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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