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 :

Recuperer le max ou le min le plus proche.


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut Recuperer le max ou le min le plus proche.
    Bonjour à tous,

    Tout d'abord merci à tous ceux qui se pencheront sur mon problème...

    Ma question est dans le titre, je souhaite récupérer par requête SQL les valeurs supérieurs et inférieurs les plus proches de la valeur que je passe dans ma clause Where:

    Par exemple j'ai une table T1 avec une colonne temps qui contient les valeurs 0 10 20 30 75 148 200 ...

    Et j'aimerai obtenir 75 148 en passant par une requête du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select(ProchMin,ProchMax from T1 Where ConditionSurtemps := 90;
    En espérant ne pas avoir été trop confus dans mes explications...

    A+.
    For crying out loud !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT ProchMin
     , ProchMax 
    FROM  ( select min(T1.Value)
       from T1
       where T1.Value <= ConditionSurtemps
      )
     cross join
      ( select min(T1.Value)
       from T1
       where T1.Value >= ConditionSurtemps
      )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Merci pour ta réponse, mais j'ai du mal avec le SQL...Alors je n'arrive pas à faire fonctionner ton exemple dans ma requête.

    Voici ce que j'avais fait précédemment pour inclure une jointure:
    (en faite je souhaite avoir, pour chaque temps les deux lignes juste supérieur et inférieur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Select * From T1
    INNER JOIN T2 ON  T1.id = T2.id
    Where temps BETWEEN
    (select Max(Horaire) as HoraireMin
    from SIM_MR_RESULTAT_Espace
    Where horaire<= temps
    ) 
    AND
    (select Min(Horaire) as HoraireMax
    from SIM_MR_RESULTAT_Espace
    Where horaire>= temps);
    Sauf que là il me sort toutes les jointures possible, comme si ma condition était toujours vrai...
    For crying out loud !

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Difficile de voir dans ton exemple d'où viennent les colonnes qui ne sont pas qualifiées...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Oui, en faite mon problème vient de ma jointure je pense....
    Mais c'est vrai que c'est pas très clair ce sue je demande.

    En fait j'ai deux tables, l'une avec une colonne temps et l'autre avec une colonne horaire, et j'aimerais créer une jointure dans une vue qui me permettrait de récupérer toutes mes colonnes des deux tables,
    avec, pour condition, que à chaque valeur de temps je récupère les lignes de l'autre table pour laquelle j'aurais horaire qui serait juste inférieur et supérieur à mon ce temps.

    Pour simplifier un peu, voici un exemple concret de ce que je souhaite faire:
    T1: temps: 1 2 3 4 5
    id: 1 1 1 1 1
    personnes:4 2 7 1 0

    Et T2:
    horaire: 0 2 5 7
    id: 1 1 1 1
    genre: A Z Z Q

    Et j'aimerais avoir une vue avec:
    TVue :
    id: 1 1 1 1 1 1 ... 1
    temps: 1 1 2 2 3 3 ... 5
    horaire: 0 2 2 2 2 5 ... 5
    personnes: 4 4 2 2 7 7 ... 0
    genres: A Z Z Z Z Z ... Z

    Les deux première lignes correspondant à Min de horaire pr (temps=1) et max de horaire pour (temps=1), les deux suivantes pour temps =2..

    Mais je n'arrive jamais à ce résultat...

    Merci en core pour votre aide.

    A+.
    For crying out loud !

Discussions similaires

  1. [MySQL, PostGreSQL] Récupérer les max sur une jointure
    Par genova dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/12/2017, 15h25
  2. Creation de table et recuperation de Max et de Min
    Par patrickthierry dans le forum Développement
    Réponses: 1
    Dernier message: 01/05/2010, 14h21
  3. [MySQL] [débutant] probleme pour recuperer ID max et ID min
    Par fabien14 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/09/2006, 10h48
  4. recuperer size max d'une JLabel
    Par ferrero dans le forum AWT/Swing
    Réponses: 19
    Dernier message: 17/08/2006, 17h54
  5. recuperer valeur MAX du jour courant
    Par duck54 dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/05/2006, 23h03

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