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

SQL Oracle Discussion :

Extraction de données avec conditions


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    autres
    Inscrit en
    Février 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2018
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Extraction de données avec conditions
    Bonjour le forum,
    Etant débutant dans SQL, je rencontre des difficultés à obtenir une extraction d’une table crée avec conditions.

    Je m’explique, J’ai créé une table, table1, avec les champs suivant :
    N° client, nom client, nom du produit, diamètre, prix unitaire, montant, date d’achat.

    Dans la table1, il y a plusieurs produits, mais je souhaite ciblé que le produit « tuyaux PVC », ce produit est proposé avec plusieurs diamètres, 32 mm, 45mm ,50mm. (Millimètre)

    Mon problème :

    Je souhaite faire une extraction de la table1, afin d’obtenir la liste des clients, qui ont acheté le même jour, les tuyaux PVC de diamètre 32 mm et 45 mm et qui n’ont pas acheté de tuyaux PVC de diamètre 50 mm.

    Je vous remercie par avance pour votre aide.

    Cordialement,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Qu'as-tu déjà essayé comme requête(s) ?
    Où rencontres-tu un problème ?
    Un message d'erreur ? Lequel ?
    Un résulta qui ne correspond pas à celui attendu ? Explique-le avec un jeu d'essai, le résultat obtenu et celui attendu...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Consultant ERP
    Inscrit en
    Février 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2018
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Il va falloir que tu décomposes ton problème en problèmes plus simple.
    D'abord demandes toi quelle est la liste des clients qui ont acheté un tuyau de 32 le jour J.

    Puis ensuite trouve la liste des clients qui ont acheté un tuyau de 45 le jour J.

    Ensuite, tu 'intersectionnes' par une jointure (sur les clients) tes listes pour trouver les clients qui ont acheté à la fois un tuyau de 32 et de 45 le jour J.
    Et là tu est sur la bonne voie... (reste à joindre la troisième liste de ta demande).

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      select num_client, nom_client, dt_achat
        from table1
       where nom_produit = 'tuyaux PVC'
         and diametre   in ('32 mm', '45 mm', '50 mm')
    group by num_client, nom_client, dt_achat
      having count(distinct diametre) = 2
         and min(diametre)            = '32 mm'
         and max(diametre)            = '45 mm';
    Vu que c'est de la division relationnelle, ce qui n'est simple ni pour un débutant ni même pour la plupart des confirmés, je vous donne la solution toute faite.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Petite précision sur le code de Waldar, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(distinct diametre) = 2
    est inutile (pour cet exemple précis)


    Sinon, une autre façon de faire (comme proposé par jil54) : C'est toute l'histoire tout bête des patates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (select num_client, nom_client, dt_achat
        from table1
       where nom_produit = 'tuyaux PVC'  and diametre = '32 mm'
    INTERSECT
    select num_client, nom_client, dt_achat
        from table1
       where nom_produit = 'tuyaux PVC' and diametre = '45 mm'
    )
    MINUS
    select num_client, nom_client, dt_achat
        from table1
       where nom_produit = 'tuyaux PVC' and diametre = '50 mm'

    Attention, à la précision de la demande (parce qu'il faut toujours préciser les phrases qui peuvent être interprétées de façons différentes :
    Je souhaite faire une extraction de la table1, afin d’obtenir la liste des clients, qui ont acheté le même jour, les tuyaux PVC de diamètre 32 mm et 45 mm et qui n’ont pas acheté de tuyaux PVC de diamètre 50 mm.
    On peut comprendre : Liste des clients qui ont acheté le même jour des PVC de 32 et 45, et qui n'ont jamais acheté de PVC de 50
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Futur Membre du Club
    Homme Profil pro
    autres
    Inscrit en
    Février 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2018
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Extraction de données avec conditions
    Bonjour le forum, bonjour les intervenants,

    Merci Waldar, jil54 et McM pour les remarques et les explications, j'ai appris beaucoup de choses grâce a vous.

    Pour "McM" effectivement il y a une différence entre " les clients qui n'ont jamais acheté de PVC 50" et " les clients qui n'ont pas acheté de PVC 50".

    Les résultats sont satisfaisant avec les deux codes.

    Merci le forum.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/08/2007, 14h06
  2. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum Outils
    Réponses: 1
    Dernier message: 24/08/2007, 14h58
  3. Importation de données avec conditions
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 24/08/2007, 08h40
  4. db2: récupération de données avec condition max
    Par letuyen dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/03/2007, 16h45
  5. Réponses: 4
    Dernier message: 09/05/2006, 08h55

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