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 :

Problème avec MIN


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut Problème avec MIN
    Bonjour,

    Dans une table j'ai 3 champs de int.
    Je voudrais récuperer pour mes 3 champs sa plus petite valeur, et savoir sur quel ligne est la plus petite valeur.
    J'arrive à connaître les valeurs les plus petites.
    Comment faire pour savoir sur quel ligne est cette valeur ?

    Requête incomplete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT min(a), min(b), min(c)
    FROM test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE Test(
    testID int NOT NULL IDENTITY(1,1),	
    a int,
    b int,
    c int,
    );
     
     
    INSERT INTO Test (a, b, c)
    VALUES (1 ,2  ,3);
     
    INSERT INTO Test (a, b, c)
    VALUES (2, 1  ,4);
     
    INSERT INTO Test (a, b, c)
    VALUES (1, 3  ,2);
    Merci pour votre aide.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    J'ai fait ceci qui donne le bon résultat.
    Il ya surment des optimitisations

    requête SQL-SERVER, modifié le TOP en LIMIT selon le sgbd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT t1.testid ida, t1.a, t2.testid idb, t2.b, t3.testid idc, t3.c
    FROM
    (SELECT
     TOP 1 testid, a
    FROM test
    WHERE a = (SELECT min(a) FROM test)) t1
    JOIN
    (SELECT
     TOP 1 testid, b
    FROM test
    WHERE b = (SELECT min(b) FROM test)) t2
    ON 1=1
    JOIN
    (SELECT
     TOP 1 testid, c
    FROM test
    WHERE c = (SELECT min(c) FROM test)) t3
    ON 1=1

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Bonjour,
    Tu veux obtenir la valeur minimale pour un champ ainsi que l'id de la ligne correspondante.
    J'ai une précision à te demander,
    Si la valeur minimale est présente dans plusieurs lignes, veux-tu obtenir les id de toutes ces lignes ou seulement l'id d'une ligne ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Juste une ligne.

    Mais l'autre aussi m'interresse aussi par connaissance.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Avec une table Test se présentant ainsi :
    Test (testID, a, b, c)

    Pour obtenir la valeur minimale de a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MIN(a)
    FROM Test
    On peut également l'obtenir ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.a
    FROM Test t1
      LEFT OUTER JOIN Test t2 ON t2.a<t1.a
    WHERE t2.testID IS NULL
    La valeur minimale de a est celle pour laquelle aucune autre n'est inférieure.

    Pour obtenir les id des lignes correspondantes il faut ajouter le champ testID dans la clause SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.a,t1.testID
    FROM Test t1
      LEFT OUTER JOIN Test t2 ON t2.a<t1.a
    WHERE t2.testID IS NULL

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

Discussions similaires

  1. Problème avec min(date) dans un select
    Par Romanodi13 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/03/2015, 12h53
  2. Problème avec ma requete min()
    Par mrpropre57 dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/04/2013, 12h41
  3. problème avec min-width
    Par mdr_cedrick dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/07/2009, 10h26
  4. [Vb.Net]NumericUpDown et DataBinding : problème avec la valeur min
    Par SamRay1024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/04/2006, 17h34
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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