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 :

Tri par requête


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Tri par requête
    Bonjour à tous

    J'ai un p'tit problème de requête . Voilà le sujet
    J'ai une table comportant 3 champs
    champ 1 : clef
    champ 2 : nom
    champ 3 : valeur quelconque
    J'aimerais pouvoir trier les enregistrements par nom , mais en ne retenant que les x (x=2 dans l'exemple) plus grandes valeurs quelconques pour chaque nom

    Pour essayer d'etre plus clair imaginons 6 enregistrements(clef-nom-valeur)
    1 - A - 10
    2 - B - 2
    3 - B - 8
    4 - A - 15
    5 - B - 20
    6 - A - 13
    j'aimerais en retour
    4 - A - 15
    6 - A - 13
    5 - B - 20
    3 - B - 8

    Merci pour votre aide A+

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = " .....ORDER BY champ2 ASC,  champ3 DESC";
    devrait faire l'affaire

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Et pour ne garder que les X plus grandes où plus petites valeurs?

    merci A+

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ok . J'essaie merci.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Apparemment LIMIT ne fonctionne qu'avec MYSQL
    par contre j'ai bien vu TOP X ; mais ca ne prend que les X premiers enregistrements de la requête globale et non pas les X enregistrements a chaque changement de nom

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    CREATE TABLE T 
    (CLEF    INT,
     NOM     CHAR(1),
     VALEUR  INT)
     
    INSERT INTO T VALUES (1, 'A', 10)
    INSERT INTO T VALUES (2, 'B', 2)
    INSERT INTO T VALUES (3, 'B', 8)
    INSERT INTO T VALUES (4, 'A', 15)
    INSERT INTO T VALUES (5, 'B', 20)
    INSERT INTO T VALUES (6, 'A', 13)
     
    SELECT TE.*
    FROM   T AS TE
           INNER JOIN (SELECT T1.NOM, T1.VALEUR
                       FROM   T AS T1
                              INNER JOIN T AS T2
                                    ON T1.NOM = T2.NOM
                                       AND T1.VALEUR > T2.VALEUR
                       GROUP  BY T1.NOM, T1.VALEUR
                       HAVING COUNT(*) <= 2) AS TI
                 ON TE.NOM = TI.NOM
                    AND TE.VALEUR = TI.VALEUR
    ORDER BY TE.NOM, TE.VALEUR
     
    CLEF        NOM  VALEUR      
    ----------- ---- ----------- 
    6           A    13
    4           A    15
    3           B    8
    5           B    20
    Et pour un cours sur SQL, mes livres, comme mon site web peuvent vous être utile !

    A +

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour la soluce j'aurais jamais trouvé ca tout seul.Encore merci

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

Discussions similaires

  1. [MySQL] Tri par champs avec une seule requête
    Par Yoks69 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/10/2008, 09h05
  2. requête : tri par longueur d'un champ varchar
    Par Deadern dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/02/2008, 16h58
  3. Ordre de tri par mois et années dans une requête analyse croisée
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/11/2007, 22h11
  4. Requête récalcitrante avec un tri par COUNT sans GROUP BY
    Par Ancalagon77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2006, 15h27
  5. Requête SQL de tri par date
    Par Alain15 dans le forum Requêtes
    Réponses: 8
    Dernier message: 03/08/2006, 09h34

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