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 SQL pour max entre 3 colonnes


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 29
    Points
    29
    Par défaut Requête SQL pour max entre 3 colonnes
    Bonjour, j'ai une table Access avec les champs suivants :
    ID_table
    date1
    date2
    date3

    j'aimerai obtenir une table avec
    ID_table
    max de (date1, date2, date3)

    doit y avoir une astuce, mais je trouve pas.

    Quelqu'un a t'il une idée sans passer par de la prog vba?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu veux le Max de chacune des colonnes, ou le Max des trois colonnes confondues ?

    Starec

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Tu veux le Max de chacune des colonnes, ou le Max des trois colonnes confondues ?

    Starec
    Hello je voudrais le max des trois colonnes

    en gros si j'ai (je remplace ici les dates par des lettres) :
    ID1 a b c
    ID2 f g e
    ID3 z y x

    jaimerai une requete qui me donne le résultat suivant :
    ID1 c
    ID2 g
    ID3 z

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    La lecture de ce tuto http://access.developpez.com/sql/ te donnera toutes les indications nécessaires à la réalisation de ta requête.

    Starec

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Starec Voir le message
    Re

    La lecture de ce tuto http://access.developpez.com/sql/ te donnera toutes les indications nécessaires à la réalisation de ta requête.

    Starec
    euhhhh... un peu facile comme réponse çà !
    c'est comme me dire : tiens tu trouveras la réponse sur www.google.fr (je plaisante :p ).

    Dans les exemples donnésds le tuto, tu n'as aucune utilisation de fonctions agrégats sur des colonnes distinctes (en l'occurence, je ne crois pas qu'il soit possible de donner plusieurs arguments à une fonction max sous Access)

    Trouver le max d'une valeur dans la meme colonne ok.
    mais afficher la valeur max de trois colonnes...

    Je peux m'en sortir en faisant une table temporaire et en mettant toute les valeurs avec deux champ en splittant un enregistrement
    ID1 date1 date2 date3
    en
    ID1 date1
    ID1 date2
    ID1 date3

    et en faisant un group by , max

    mais j'aurai voulu faire ca en une requete si c'était possible.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comment cela c'est trop facile, le tuto t'explique comment faire les requêtes d'agrégation.

    Il faut un peu de réflexion, tu trouveras rarement la formule idéal, j'ai créer une table avec trois champ, et voilà le SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Max(champ1) AS MaxDechamp1, Max(champ2) AS MaxDechamp2, Max(champ3) AS MaxDechamp3
    FROM Table1;
    Tu remplaces par le nom de tes champs, et tu verras que cela fonctionne.


    Starec

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    pas tout a fait d'accord avec toi starec

    ca marche mieux avec ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IIf([champ3]>IIf([champ1]>[champ2],[champ1],[champ2]),[champ3],IIf([champ1]>[champ2],[champ1],[champ2])) AS [max] FROM Table1;

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Merci les gars

    ta requete est exactement ce que je cherchais vodiem.
    Starec, tu proposes un select de trois champs affichant les max de trois colonnes), alors que je ne veux qu'un seul champ résultat.

    Tu vois, ce n'était pas si simple

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    cela risque de devenir fastidieux avec 12 champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function mmax(ParamArray x() As Variant) As Variant
    Dim tempo As Variant
    Dim index As Variant
    For Each index In x
    If Not IsMissing(index) And Not IsNull(index) Then
    If index > tempo Then tempo = index
    End If
    Next index
    mmax = tempo
    End Function
    accepte un nombre indéfini de champs

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

Discussions similaires

  1. Requête chiffre max entre plusieurs colonnes inconnues
    Par christophebe dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/02/2015, 21h21
  2. Réponses: 38
    Dernier message: 08/11/2013, 13h12
  3. Requête SQL pour fusionner des colonnes
    Par Aenur56 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/05/2010, 20h23
  4. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 13h21
  5. Requêtes SQL pour access
    Par cciocc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/04/2005, 09h45

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