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 :

Problème avec une requête


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Problème avec une requête
    Bonjour,
    Je solicite votre aide sur ce forum car je suis étudiante en L2 economie-gestion avec une spécialité maths & info. Or c'est la première année que j'utilise ACCESS et j'ai un petit soucis.
    Lors de nos TD je n'ai eu jusqu'à présent aucun problème pour construire mes requêtes mais le prof nous a donné un "devoir maison" (qui compte pour notre partiel) et qui est d'un niveau bien plus élevé que ce que nous avons fait en cours jusqu'à présent.
    Autant dire que j'ai déjà pas mal cogité sur la première question mais je n'y arrive pas... Et c'est assez frustrant c'est donc pour cela que je viens vous demander de l'aide.

    Voici l'énoncé dans sa totalité:

    Le stockage d'informations dans une base permet de satisfaire les deux types d'usages, qu'on peut faire de ces données :

     Un usage opérationnel à travers la gestion de la donnée. Par exemple, enregistrement d'une vente (par ajout d'une nouvelle facture), référencement d'un nouveau client (ajout ou modification de ses coordonnées), mise à jour du stock (mise à jour de la valeur d'un champ, effectuée lors d'inventaires annuels).

     Un usage décisionnel, analyses de tendances, basées sur des statistiques, pour déterminer une stratégie d'entreprise (d'où le terme "décisionnel").
    Vous venez de finir vos études et êtes embauché dans une entreprise de revente de fourniture et de mobilier. Ses principaux clients sont d'autres sociétés. Vous faites partie du service comptabilité-facturation et connaissez Access, outil au travers duquel l'entreprise assure toute sa gestion. Votre maîtrise de l'outil fait converger vers vous les demandes des autres services.
    La base est structurée ainsi :




    Il faut noter que :

     Une facture traduit la vente d'un ou de plusieurs produits.

     Chaque trimestre, les prix de chaque produit varient. Un nouveau barème/catalogue est édité. Le service Marketing met à jour le prix de vente de chaque produit en fonction de l'état du marché et le service Achat met à jour le coût d'achat du produit en fonction des dernières négociations avec ses fournisseurs/fabricants.

     Les dates de barèmes sont consécutives. La date de fin d'un barème est la veille de la date de début du barème suivant. Aucune période ne se chevauche.


    Voici ma première question:
    1. Vous découvrez cette base de données et voulez vérifier au travers d'une requête que les barèmes sont bien consécutifs. Vous constatez qu'il y a 8 enregistrements dans la table des Barème.  Compter le nombre de barèmes pour lequel il existe un barème qui commence le jour suivant la fin du barème courant. Il doit normalement y en avoir 7, puisque le barème le plus récent n'a pas de successeur.

    J'ai donc esssayé de nombreuses requêtes mais rien ne marche...
    Mon premier problème concerne le fait que la date de début doit être égale à une date de fin +1 jour. Et je ne sais pas vraiment comment éxecuter cela sous access.
    Je crois avoir essayé DATEADD ("d", 1, #jj/mm/aaaa#), mais sans résultat.
    Sinon mon autre problème est que l'on me demande de comparer les dates de fin et dates de début où la date de début est égale à une (date de fin +1).
    Le problème c'est que c'est deux lignes différentes alors access va comparer la date de fin et la date de début de chaque ligne...

    Bref je tourne en rond je crois...


    Je vous remercie vraiment d'avance!

    PS: je continue à chercher et je vous ferait part de mes découvertes ou illuminations

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 722
    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 722
    Points : 57 381
    Points
    57 381
    Billets dans le blog
    42
    Par défaut
    Bonjour Tiffany,

    hé bien avec DateAdd tu n’es pas loin mais avec les assistants il faut procéder en au moins deux temps :
    Une 1ère requête R_Datefinplusun avec idBareme et un champ calculé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Datefinplusun : AjDate("j";[DateFin];1)
    Puis une autre requête :
    R_Datefinplusun------Bareme
    avec la jointure R_Datefinplusun.Datefinplusun------Bareme.DateDebut où tu ramènes R_Datefinplusun.idBareme qui va ramener les…
    Citation Envoyé par Tifany.Pitel
    …barèmes pour lequel il existe un barème qui commence le jour suivant la fin du barème courant
    …et un comptage sur le nombre d’enregistrements retournés pour finir.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Euh à vrai dire je n'ai pas très bien compris ce qu'il fallait que je fasse...
    En gros c'est une histoire de sous requêtes mais c'est ce que j'ai essayé de faire et cela ne marche pas.
    Voila ce que j'avais essayé juste avant de lire ton post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Count(DateDébut)
    FROM Barème INNER JOIN (
                                       SELECT DATEADD ("d", 1, DateFin) AS Date1
                                       FROM Barème
                                        )         
    ON (Barème.DateDébut = Date1)
    WHERE DateDébut=Date1

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 722
    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 722
    Points : 57 381
    Points
    57 381
    Billets dans le blog
    42
    Par défaut
    je proposais de le faire avec les assistants pour les requêtes, tu fais tout graphiquement pour tester.

    Citation Envoyé par f-leb Voir le message
    Une 1ère requête R_Datefinplusun avec idBareme et un champ calculé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Datefinplusun : AjDate("j";[DateFin];1)
    Tu créées une nouvelle requête que tu enregistres sous le nom R_Datefinplusun

    Puis une autre requête :
    R_Datefinplusun------Bareme
    avec la jointure R_Datefinplusun.Datefinplusun------Bareme.DateDebut où tu ramènes R_Datefinplusun.idBareme qui va ramener les…


    …et un comptage sur le nombre d’enregistrements retournés pour finir.
    Tu créées une 2ème requête dans laquelle tu insères la table Bareme et la requête précédente R_Datefinplusun et tu fais la jointure à la souris.

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 722
    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 722
    Points : 57 381
    Points
    57 381
    Billets dans le blog
    42
    Par défaut
    en SQL, on ne doit pas être loin non plus,

    essaye avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Count(*)
    FROM Barème INNER JOIN (
                                       SELECT DATEADD ("d", 1, DateFin) AS Date1
                                       FROM Barème
                                        ) as T        
    ON (Barème.DateDébut = T.Date1)
    WHERE DateDébut=Date1

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup, je teste ça dès que j'en ai l'occasion et je te tiens au courant.
    Le truc c'est que théoriquement je n'ai pas le droit d'utiliser les assistants et en plus je ne sais même pas m'en servir...

    Mon DM est plutôt long alors on se recroisera certainement!

    Merci

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Super!
    Ca y est je suis rentrée chez moi et je n'ai tout simplement pas pu résister à l'envie de tester la requête!! =P
    Donc ca y est, finalement ca marche!! Je suis tout de même contente car je n'était pas très loin, plutôt même en bon chemin. Je savais que quelque chose clochait mais je ne savais pas quoi...

    Je te remercie encore d'avoir eu le courage de lire le pavé que j'ai posté au début me je préférait etre précise.
    Et puis, comme je l'ai dit juste avant le dm comporte 23 questions et qui sont d'un niveau très très largement supérieur aux questions habituelles qu'on a en TD alors je risque de sacrément réfléchir mais je pense que je reviendrait soliciter votre aide...

    Merci mille fois encore ^^

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

Discussions similaires

  1. [TADOQuery] Problème avec une requête
    Par yannba dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/01/2006, 13h51
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 05h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

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