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 et sous requête pour rapatrier le bon multiplicateur selon une date [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Requête et sous requête pour rapatrier le bon multiplicateur selon une date
    Bonjour,

    J'ai actuellement deux tables, une "TableA" avec des valeurs et l'autre "TableB" avec des valeurs de correction et je voudrais les croiser pour que selon la date de la première table j'obtienne la valeur de correction du même jour ou d'une date antérieure la plus proche à intégrer dans une troisième table "TableRésultat".

    Exemple:

    TableA
    DateVal Valeur1
    01/03/16 2
    05/04/16 5

    TableB
    DateCorr ValCor
    02/01/16 0,5
    01/04/16 1,5

    TableRésultat
    DateFinale Resultat
    01/03/16 1
    05/04/16 7,5

    Ainsi de la "TableA", pour le 05/04/16 je regarde cette date là dans la "TableB" et n'ayant pas de ligne pour cette même date je prends la plus proche dans le passé qui est celle du 01/04/16 et je les multiplie pour renseigner la "TableRésultat" en gardant la date de la "TableA".

    J'espère que mes explication sont claires.

    Pourriez-vous m'aider pour réaliser cette requête dans Access en SQL

    En tout cas merci pour votre aide!!!

    Ciaoooo

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Est-ce que ce tuto sur la recherche de valeurs dans une table qui contient des paliers te donne des inspirations pour faire ce que tu souhaites ?

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je l'avais regardé en effet. Mais comme je dois faire un calcul sur une grande table et non pas rapatrier une valeur...je pense que ce n'est pas applicable.

    Pour rapatrier la valeur la plus proche d'une date j'ai bien réussi avec la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    strsql = "INSERT INTO [TableRésultat]"
    strsql = strsql & " SELECT TOP 1 [TableB].DateParam as DateFinale, [TableB].Param as resultat"
    strsql = strsql & " FROM [TableB] "
    strsql = strsql & " WHERE [TableB].DateParam <= #" & Format(datecheck, "mm\/dd\/yyyy\") & "#"
    strsql = strsql & " ORDER BY [TableB].DateParam DESC;"
    DoCmd.RunSQL strsql
    Mais ceci c'est en ayant défini au préalable la date dans la variable "datecheck" et non pas au moment de la requête pour chaque ligne d'une tableA selon sa colonne date...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    mmm...

    Il me semble que j'ai réussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    strsql = "INSERT INTO [TableRésultat]"
    strsql = strsql & " SELECT [TableA].DateVal as DateFinale, [TableA].Valeur1 * (SELECT TOP 1 [TableB].ValCor"
    strsql = strsql & " FROM [TableB] "
    strsql = strsql & " WHERE [TableB].DateCorr <= [Table1].DateVal"
    strsql = strsql & " ORDER BY [TableB].DateCorr DESC) as Resultat"
    strsql = strsql & " FROM [TableA];"
    DoCmd.RunSQL strsql
    Cela vous semble-t-il correcte??

    Mercii

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    En partant du tuto et en utilisant les fonctions de domaines d'Acces, on a la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TableA.DateVal, TableA.Valeur1, DLookUp("[ValCor]","[TableB]","[DateCorr]=#" & Format(DMax("[DateCorr]","[tableB]","[DateCorr]<#" & [DateVal] & "#"),"yyyy/mm/dd") & "#") AS ValCor_FK, [valeur1]*[ValCor_FK] AS Resultat
    FROM TableA;

    Avec des sous-requêtes on peut l'obtenir je pense avec :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TableA.DateVal, TableA.Valeur1, (SELECT [ValCor] FROM [tableB] WHERE [DateCorr]=(SELECT max([DateCorr]) FROM [TableB] WHERE [DateCorr]<[DateVal])) AS ValCor_FK, [Valeur1]*[ValCor_FK] AS Resultat
    FROM TableA;

    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Nickel!!!

    Merci beaucoup pour l'aide madefemere

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 24/10/2011, 21h56
  2. Requête et sous requête
    Par godzp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/03/2008, 15h11
  3. Requête et sous requête
    Par 501darts dans le forum Développement
    Réponses: 1
    Dernier message: 21/02/2008, 10h53
  4. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 21h25
  5. Requêtes et sous requêtes
    Par lau2nyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2004, 15h14

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