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 :

Requête SQL sur ACCESS


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Requête SQL sur ACCESS
    Bonjour,

    Je suis en train de créer une base de données ACCESS dans le cadre d'un stage et je suis bloquée sur une requête.
    Alors voilà, ma table comprends les champs suivants: N°_fournisseur, Fournisseur, Cmde, Engagé, Réceptionné,Type, Division, Date_effet, Date_fin_réception, Date_cmde

    Je voudrais réaliser une requête SQL qui me permette de sortir:

    La liste des fournisseurs n'ayant passé aucune commande depuis le 01/01/2011 et n'ayant aucun réceptionné depuis le 01/06/2011.

    Merci pour votre aide...

    MT

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 104
    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 104
    Points : 28 395
    Points
    28 395
    Par défaut
    Si tu n'as qu'une table pour gérer toutes ces informations, il faudrait commencer par repenser ton modèle de données...
    Sinon, qu'as-tu déjà essayé comme requêtes ?

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A mon avis, le modèle est à revoir. Vous ne pouvez pas avoir qu'une seule table ...

    Des clients, des commandes, des fournisseurs, des réceptions...

    J'en vois déjà au moins 5 ou 6...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut ok mais...
    ... Cela ne me donne pas un modèle de requête.
    Il n'y a aucun champ référent à des clients dans cette table. la table est commande et ne fait référence qu'aux commandes passées aux fournisseurs.
    Ok elle n'est pas forcément bien construite mais je dois établir mes modèles de requêtes sur cette base de données existante avant de créer la nouvelle.
    Une requête SQL à me soumettre qui puisse exprimer liste fournisseur n'ayant aucune commande après 01/01/2011?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut merci !
    Bonsoir,

    là je suis sensée faire ce modèle de requête sur la base existante et non sur celle que je vais créer donc oui je vais repenser le modèle des tables car il n'est pas ergonomique et gère beaucoup trop d'informations.
    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT N°_fournisseur, Fournisseur, engagé, réceptionné, date_cmde, date_fin_réceptionné
    FROM Cmdes
    WHERE engagé=0 
    AND date_cmde> #01/01/2011
    mais en fait je ne pense pas que engagé=0 permette de dire si un fournisseur a eu une commande ou pas...

    j'avais pensé à un modèle de requête avec NOT
    ou pensez qu'il soit d'ores et déjà cruciale de dissocier cette table en deux et créer une requête à partir des deux nouvelles tables?

    Merci pour vos avis... Avant de pouvoir créer ma base je dois absolument rendre cette requête sur la base existante et c'est très compliqué...


  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 705
    Points : 43 784
    Points
    43 784
    Par défaut
    C'est à ça que sert le fait d'avoir plusieurs tables, à faire des requêtes de façon simple et efficace. Il est toujours temps de rectifier le tir, le plus tôt sera le mieux. Une table commandes, et une table fournisseurs.

    Sinon, peut-être avec un regroupement sur le champ fournisseurs et un filtre date.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut merci
    Pourrais tu me donner ton avis en requête SQL stp?

    La difficulté là pour moi est d'être que j'ai tous les fournisseurs n'ayant eu AUCUNE commande APRES date untel

    jai déjà essayé
    CODE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT N°_fournisseur, Fournisseur, Date_cmde, Date_fin_réceptionné, engagé, réceptionné
    FROM Cmdes
    WHERE engagé= 0
    AND Date_cmde> #01/01/2011#
    Mais cela ne me donne pas le bon résultat

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Ce serait justement beaucoup plus simple avec un modèle mieux conçu.
    Il vous faudra a minima une table des fournisseurs...

    Avec votre modèle actuel, il va falloir la recréer artificiellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT ...
    FROM   (
        SELECT DISTINCT N°_fournisseur, Fournisseur
        FROM Cmdes
    ) AS T_FOURNISSEUR
    LEFT JOIN Cmdes
        ON Cmdes.N°_fournisseur = T_FOURNISSEUR.N°_fournisseur
        AND (
            date_cmde> #01/01/2011#
            OR
            date_fin_réceptionné>#01/06/2011#
        )
    WHERE Cmdes.N°_fournisseur IS NULL
    Quelque chose comme ça, à adapter : vous n'avez pas explicité vos règles de gestion, et notamment le rôle des colonnes engagé et réceptionné...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Super!
    Tout d'abord, merci beaucoup pour votre réponse.
    En ce qui concerne les règles de gestion:

    L'engagé correspond au montant que l'entreprise a déjà engagé dans la commande
    Le réceptionné correspond au montant reçu de la commande
    La date commande correspond à la date à laquelle la commande est envoyée au fournisseur
    La date réceptionné la date à laquelle nous réceptionnons la commande ou une partie de notre fournisseur

    Nous avons également essayé cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Cmdes.No_Fournisseur, Max(Cmdes.Date_cmde) AS DateDernière_cmde, Max(Cmdes.Date_Fin_Réception) AS DateDernière_recep, Cmdes.Fournisseur
    FROM Cmdes
    GROUP BY Cmdes.Fournisseur, Cmdes.No_Fournisseur
    HAVING NOT (Max(Cmdes.Date_Fin_Réception))>#1/6/2011#
    AND NOT (Max(Cmdes.Date_cmde))>#1/1/2011#;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Cmdes.No_Fournisseur, Cmdes.Fournisseur, Max(Cmdes.Date_cmde) AS DateDernière_cmde, Max(Cmdes.Date_Fin_Réception) AS DateDernière_Réception
    FROM Cmdes
    WHERE (((Cmdes.Engagé)=0))
    GROUP BY Cmdes.No_Fournisseur, Cmdes.Fournisseur
    HAVING (((Max(Cmdes.Date_cmde))<#1/1/2011#));
    Merci encore pour votre aide, c'est vraiment important que je puisse résoudre ce problème;

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Votre première requête semble correcte. Quel est le problème ?

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 028
    Points : 24 581
    Points
    24 581
    Par défaut
    Bonjour,
    Pour avoir des fournisseurs qui n'ont aucune commande il faut :
    1) la liste complète des fournisseurs
    2) la liste complète des commandes

    Ta requête n'a que les commandes. Comment veux-tu retrouver la liste des fournisseurs qui n'ont pas passés de commandes si tu ne lui fourni pas la première ? C'est pourtant logique.

    D'où les réflexions précédentes !

    Comme on dit "pas de bras pas de chocolat".

    Cordialement,

Discussions similaires

  1. [XL-2007] TCD via requête SQL sur Access
    Par meolimo dans le forum Excel
    Réponses: 2
    Dernier message: 23/06/2015, 20h49
  2. [C++B5]Problème avec une requëte SQL sur BDD ACCESS
    Par Sleeping Lionheart dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/04/2008, 09h03
  3. Problème requêtes SQL sur Access 2007
    Par Moroccan dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/02/2007, 13h29
  4. Requête SQL sur Access
    Par LadyArwen dans le forum VBScript
    Réponses: 3
    Dernier message: 18/10/2006, 15h00

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