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

Langage SQL Discussion :

[Mysql] Date la plus grande


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut [Mysql] Date la plus grande
    Bonjour à tous,

    dans une table je dispose

    id_to date_debut date_fin id_option Croissant1 montant_option
    8 01/04/2022 30/06/2022 10 760.00
    30 01/04/2022 24/06/2022 10 1760.00
    9 01/04/2022 30/06/2022 11 2160.00
    31 01/04/2022 26/06/2022 11 22160.00
    32 01/04/2022 30/06/2022 12 660.00
    10 01/04/2022 30/06/2022 12 760.00
    33 01/04/2022 30/07/2022 13 1100.00
    11 01/04/2022 30/06/2022 13 1100.00
    12 01/04/2022 30/06/2022 14 2200.00
    34 01/04/2022 28/07/2022 14 200.00
    13 01/04/2022 30/06/2022 15 540.00
    35 01/04/2022 02/07/2022 15 40.00
    36 01/04/2022 30/06/2022 16 1170.00
    14 01/04/2022 30/06/2022 16 170.00
    37 01/04/2022 30/07/2022 17 17.00
    15 01/04/2022 30/06/2022 17 170.00
    38 01/04/2022 30/07/2022 18 270.00
    16 01/04/2022 30/06/2022 18 270.00
    39 01/04/2022 30/06/2022 19 4320.00
    17 01/04/2022 30/06/2022 19 4320.00
    40 01/04/2022 30/06/2022 20 1300.00
    18 01/04/2022 30/06/2022 20 1300.00
    41 01/04/2022 28/06/2022 21 1330.00
    19 01/04/2022 30/06/2022 21 330.00
    20 01/04/2022 30/06/2022 22 220.00
    42 01/04/2022 30/07/2022 22 22220.00
    21 01/04/2022 30/06/2022 23 540.00
    43 01/04/2022 30/07/2022 23 540.00
    22 01/04/2022 30/06/2022 24 230.00
    44 01/04/2022 30/07/2022 24 1230.00
    23 01/04/2022 30/06/2022 25 270.00
    45 01/04/2022 30/07/2022 25 2270.00
    24 01/04/2022 30/06/2022 26 1300.00
    46 01/04/2022 30/06/2022 26 1300.00
    25 01/04/2022 30/06/2022 27 450.00
    47 01/04/2022 30/07/2022 27 4150.00
    26 01/04/2022 30/06/2022 28 650.00
    48 01/04/2022 30/06/2022 28 650.00
    27 01/04/2022 30/06/2022 29 810.00
    49 01/04/2022 28/06/2022 29 8110.00
    28 01/04/2022 30/06/2022 30 540.00
    50 01/04/2022 30/07/2022 30 540.00
    29 01/04/2022 30/06/2022 31 1100.00
    51 01/04/2022 31/07/2022 31 5500.00

    je voudrais ressortir toute les options avec leur montant mais où la date est la plus grande.

    J'ai essayé ceci, mais il me ressort 2 lignes par article

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     SELECT 
      tgo.id_option, 
      tgo.nom_option, 
      tgto.montant_option, 
      max(`date_fin`)
    FROM 
      tg_tarif_option tgto
      RIGHT JOIN tg_option tgo on tgo.id_option = tgto.id_option 
    group BY 
      tgo.id_option, 
      tgo.nom_option, 
      tgto.montant_option

    Par rapport a mon tableau, si je prends id_option='15' je voudrais n'avoir que la ligne id_to=35

    Comment devrais-je m'y prendre au niveau de ma requête SQL ?

    merci d'avance pour vos conseils

    guigui69

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Question archi-récurrente...
    Escartefigue nous a fait un article surs on blog qui traite du sujet, et qui expose plusieurs mérthodes.
    C'est .

    Tatayo.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    je fais le test et je reviens vers vous
    merci d'avance

    guigui69

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour ce tuto, la requête avec semble fonctionner.

    Dans le tuto il indique de ne pas le faire sur les ID (s’incrémente en auto) mais j'aurai besoin de faire aussi sur ID.

    La requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT tgo.id_option as id_option, tgo.nom_option as nom_option, tgto.montant_option as montant_option , tgto.date_debut as date_debut, tgto.date_fin as date_fin, tgto.id_to 
    FROM tg_option tgo 
    LEFT JOIN tg_tarif_option tgto on tgo.id_option = tgto.id_option 
    WHERE tgto.date_fin = (SELECT MAX(date_fin) FROM tg_tarif_option tgto2 WHERE tgto2.id_option=tgto.id_option) or tgto.date_fin is null 
    order by tgo.id_option
    Dans le cas ou il me remonte deux ligne pour le même article avec la même (MAX) date de fin. je voudrais qu'il sélection ID_TO le plus grand.

    Est-ce réalisable, Faut-il faire deux requêtes ?

    merci d'avance pour vos conseils

    guigui69

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Ce n'est pas nécessaire et ce n'est pas une bonne idée

    Si on a des exæquo (deux date ou deux timestamp de même valeur), en ce cas, il faut utiliser la solution 3 de mon blog, mais en remplaçant la fonction DENSE_RANKpar ROW_NUMBER. Ainsi, les différentes lignes ayant la même date auront un row_number différent et on ne retiendra que celui de valeur 1.

    Utiliser l'identifiant est pernicieux, car il fera croire à ceux qui ne connaissent pas bien le fonctionnement des identifiants attribués par le SGBD que la valeur serait chronologique, or ce n'est pas toujours le cas.

Discussions similaires

  1. [2008] Requête selon date la plus grande
    Par Piou2fois dans le forum Développement
    Réponses: 10
    Dernier message: 07/12/2018, 16h07
  2. afficher la ligne qui a la date la plus grande
    Par bssouf21 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/10/2012, 14h48
  3. Sélectionner 1 seul enregistrements selon la date la plus grande
    Par Ronaldinho dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/08/2009, 13h26
  4. Réponses: 1
    Dernier message: 21/04/2009, 22h17
  5. Sélectionner en fonction de la date la plus grande
    Par dechampfleury dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/07/2007, 11h26

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