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 sur date [Toutes versions]


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Requête sur date
    Bonjour,

    Débutante sur le générateur d'expression, j'ai une requête sur laquelle j'ai plusieurs clients ayant plusieurs commandes (dont certaines en doublon car livraison partielle), je voulais qu'il me donne la dernière date, ceci fonctionne avec l'opération "Dernier" et il m'indique vide quand je n'ai aucune date précédent indiquée. Néanmoins quand une commande a plusieurs lignes mais que la dernière est vide, il faudrait qu'il m'indique la dernière date comme étant vide.
    Pouvez-vous m'aider ? J'espère avoir été suffisamment précise.
    Vous en remerciant par avance....

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    l'expression du besoin n'est pas très claire, est ce que tu peux faire 1 tableau avec les données en entrée, modélisant plusieurs cas de commandes représentant chacun un cas de gestion, et 1 autre tableau avec le résultat attendu

  3. #3
    Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Merci pour votre aide, je vous ai fait un tableau avec des exemples qui devrait être un peu plus explicite. Pour essayer d'obtenir les dates de commande, j'avais créé une requête pour obtenir les dates des commandes les plus anciennes, puis une 2ème requête où je lui demande la livraison la plus récente où à défaut qu'il laisse la case vide, ce qui signifie qu'il manque encore une dernière livraison.

    Depuis plusieurs jours je bloque là-dessus, mais j'avoue ne pas être très à l'aise avec les expressions du générateur.

    Bien à vous
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 826
    Points : 14 923
    Points
    14 923
    Par défaut
    bonsoir,
    en premier lieu, pour obtenir les plus grandes valeurs dans un regroupement il ne faut pas utiliser Dernier mais Max.
    Ensuite pour traiter les dates nulles, il faut obligatoirement leur donner la valeur maximum, en l'occurrence: 31/12/9999.
    je procéderai comme ceci:
    première requête que je nomme R_Commande_maxdate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT codification, societe, N°commande, datecommande, Max(IIf(IsNull([datelivraison]),#12/31/9999#,[datelivraison])) AS datelivrmaxi
    FROM TableCommande
    GROUP BY codification, societe, N°commande, datecommande;
    seconde requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT codification, societe, N°commande, IIf([datelivrmaxi]=#12/31/9999#,Null,[datelivrmaxi]) AS datelivraison
    FROM R_Commande_maxdate;
    ce qui permet de redonner la valeur nulle à la date de livraison ainsi que son nom d'origine

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour chrischar

    l'exemple fourni n'est pas compatible avec la règle
    Nom : Capture.JPG
Affichages : 61
Taille : 19,2 Ko

    la date de commande la plus ancienne de BAYAN devrait faire apparaitre 27/10/2021 (et non 30/10/2021)
    la date de commande la plus ancienne de DURAT devrait faire apparaitre 01/09/2021 (et non 01/10/2021)

  6. #6
    Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonsoir, un grand merci pour cette aide, j'ai réussi la 1ère requête, cependant la 2ème me retourne une erreur, j'ai indiqué comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT R_Commande_maxdate.Codification, R_Commande_maxdate.SOCIETE, R_Commande_maxdate.[N° COMMANDE], R_Commande_maxdate.[Date commande], IIf([R_Commande_maxdate.datelivrmaxi]=#12/31/9999#,Null,[R_Commande_maxdate.datelivrmaxi] AS datelivraison
    FROM R_Commande_maxdate
    J'ai recopié toutes les instructions que vous m'avez conseillé, j'ai dû faire une erreur mais je suis totalement ignorant dans le langage sql.

    Merci pour votre patience pour les débutants



    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    en premier lieu, pour obtenir les plus grandes valeurs dans un regroupement il ne faut pas utiliser Dernier mais Max.
    Ensuite pour traiter les dates nulles, il faut obligatoirement leur donner la valeur maximum, en l'occurrence: 31/12/9999.
    je procéderai comme ceci:
    première requête que je nomme R_Commande_maxdate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT codification, societe, N°commande, datecommande, Max(IIf(IsNull([datelivraison]),#12/31/9999#,[datelivraison])) AS datelivrmaxi
    FROM TableCommande
    GROUP BY codification, societe, N°commande, datecommande;
    seconde requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT codification, societe, N°commande, IIf([datelivrmaxi]=#12/31/9999#,Null,[datelivrmaxi]) AS datelivraison
    FROM R_Commande_maxdate;
    ce qui permet de redonner la valeur nulle à la date de livraison ainsi que son nom d'origine

  7. #7
    Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Oui vous avez parfaitement raison, j'ai fait une erreur de saisie. MERCI


    Citation Envoyé par accessisgood Voir le message
    Bonjour chrischar

    l'exemple fourni n'est pas compatible avec la règle
    Nom : Capture.JPG
Affichages : 61
Taille : 19,2 Ko

    la date de commande la plus ancienne de BAYAN devrait faire apparaitre 27/10/2021 (et non 30/10/2021)
    la date de commande la plus ancienne de DURAT devrait faire apparaitre 01/09/2021 (et non 01/10/2021)

  8. #8
    Candidat au Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé mon erreur (absence d'une parenthèse, problème du débutant =).
    Dans tous les cas je vous remercie vivement pour votre aide qui me permet d'avancer sur mon projet.

    Très bonne soirée, je clôture le sujet.


    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    en premier lieu, pour obtenir les plus grandes valeurs dans un regroupement il ne faut pas utiliser Dernier mais Max.
    Ensuite pour traiter les dates nulles, il faut obligatoirement leur donner la valeur maximum, en l'occurrence: 31/12/9999.
    je procéderai comme ceci:
    première requête que je nomme R_Commande_maxdate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT codification, societe, N°commande, datecommande, Max(IIf(IsNull([datelivraison]),#12/31/9999#,[datelivraison])) AS datelivrmaxi
    FROM TableCommande
    GROUP BY codification, societe, N°commande, datecommande;
    seconde requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT codification, societe, N°commande, IIf([datelivrmaxi]=#12/31/9999#,Null,[datelivrmaxi]) AS datelivraison
    FROM R_Commande_maxdate;
    ce qui permet de redonner la valeur nulle à la date de livraison ainsi que son nom d'origine

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

Discussions similaires

  1. [AC-2007] Besoin d'aide sur une rêqute sur "Like" et la Date
    Par Jiben59 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/01/2018, 15h29
  2. Requête sur date
    Par guenfood dans le forum Access
    Réponses: 11
    Dernier message: 08/12/2004, 16h11
  3. [Debutant(e)]operation sur dates
    Par sUrTr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/10/2004, 15h58
  4. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 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