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 MySQL Discussion :

Requête de Tri


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Points : 19
    Points
    19
    Par défaut Requête de Tri
    Bonjour,

    Je suis sur un projet de serveur web traitant les fichiers log des routeurs.

    Je tri les messages de Taux d'Erreur Binaire, j'ai une table comme celle ci :

    +--------+----------+-------+-------+
    | ID | Routeur |Liaison| TEB |
    +--------+----------+-------+-------+
    | 1 | A | 1 | 1278 |
    | 2 | B | 2 | 258 |
    | 3 | C | 1 | 56 |
    | 4 | D | 3 | 854 |
    | 5 | E | 2 | 120 |
    | 6 | F | 3 | 12 |
    +--------+----------+-------+-------+

    Et j'aimerai récupérer une table comme cela :

    +--------+----------+-------+-------+
    | ID | Routeur |Liaison| TEB |
    +--------+----------+-------+-------+
    | 1 | A | 1 | 1278 |
    | 3 | C | 1 | 56 |
    | 4 | D | 3 | 854 |
    | 6 | F | 3 | 12 |
    | 2 | B | 2 | 258 |
    | 5 | E | 2 | 120 |
    +--------+----------+-------+-------+

    J'ai essayé avec plusieurs combinaisons de ORDER BY et je n'y arrive pas.

    Merci d'avance pour votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quelle est la logique de l'ordre que tu veux obtenir ?
    C'est pas clair avec les données que tu donnes et le résultat souhaité que tu présentes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Je m'explique.

    Je veux trier par TEB. Et faire suivre le deuxième membre de la liaison.

    Exemple : Le routeur A le plus grand TEB, il sera placé en 1er.
    Ensuite on placera le routeur C car il est sur la même liaison
    Puis on prendra le routeur qui a le deuxième plus grand TEB ...

    C'est plus clair ?

    PS : Au final, je veux afficher cela sur une page web donc dites moi si c'est plus simple de le faire directement en php.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Essaie cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT l.ID, l.Routeur, l.Liaison, l.TEB
    FROM log_routeurs l
    INNER JOIN 
    (
    	SELECT Liaison, MAX(TEB) AS teb_max
    	FROM log_routeurs
    	GROUP BY Liaison
    ) tmp ON tmp.liaison = l.liaison
    ORDER BY tmp.teb_max DESC, l.liaison, l.TEB DESC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    ça ne marche pas, j'ai essayé comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t.PCG, t.Col19, t.Routeur_Interface, t.SiteA, t.SiteB, t.BoucleORS, t.TEB FROM result_log_teb t
    INNER JOIN 
    (
    	SELECT Col19, MAX(TEB) AS teb_max
    	FROM result_log_teb
    	GROUP BY Col19
    ) tmp ON tmp.col19 = t.col19 
    GROUP BY col19
    ORDER BY tmp.teb_max DESC, t.col19, t.TEB DESC
    Mais ça ne marche pas non plus ...

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu pose une question avec ces colonnes :
    +--------+----------+-------+-------+
    | ID | Routeur |Liaison| TEB |
    +--------+----------+-------+-------+
    Et ta requête utilise celles-ci :
    t.PCG, t.Col19, t.Routeur_Interface, t.SiteA, t.SiteB, t.BoucleORS, t.TEB
    Tu es sûr que l'anonyme Col19 correspond bien à ce que tu nommais naguère "liaison" ?

    As-tu compris ma requête ?

    Ceci dit, je ne l'avais pas testée.

    EDIT :
    Je viens de tester et ma requête fonctionne avec les données que tu as fournies.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `result_log_teb` (
     `ID` int(11) NOT NULL AUTO_INCREMENT,
     `Routeur` char(1) NOT NULL,
     `Liaison` int(11) NOT NULL,
     `TEB` int(11) NOT NULL,
     PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO `result_log_teb` (`ID`, `Routeur`, `Liaison`, `TEB`) VALUES
    (1, 'A', 1, 1278),
    (2, 'B', 2, 258),
    (3, 'C', 1, 56),
    (4, 'D', 3, 854),
    (5, 'E', 2, 120),
    (6, 'F', 3, 12);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT l.ID, l.Routeur, l.Liaison, l.TEB
    FROM result_log_teb l
    INNER JOIN 
    (
    	SELECT Liaison, MAX(TEB) AS teb_max
    	FROM result_log_teb
    	GROUP BY Liaison
    ) tmp ON tmp.liaison = l.liaison
    ORDER BY tmp.teb_max DESC, l.liaison, l.TEB DESC
    Résultat :
    Textes complets 	ID 	Routeur 	Liaison 	TEB
    1 	A 	1 	1278
    3 	C 	1 	56
    4 	D 	3 	854
    6 	F 	3 	12
    2 	B 	2 	258
    5 	E 	2 	120
    Donc c'est ton interprétation de ma requête qui ne va pas.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Autant pour moi !

    Les autres colonnes sont là juste pour l'affichage donc n'entre pas en jeu dans le tri. Je vais recommencer interprétation.

    Merci encore !

Discussions similaires

  1. Fusion de deux requêtes pour tri partiel
    Par zebiloute dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/12/2007, 11h29
  2. Requête de tri sur les 20 derniers enregistrements
    Par kryogen dans le forum Langage SQL
    Réponses: 16
    Dernier message: 16/04/2007, 10h40
  3. [MySQL] Requête de tri sur les 20 derniers enregistrements
    Par kryogen dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/04/2007, 10h26
  4. Aide pour requête de Tri assez spécial (Oracle)
    Par Chips dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/04/2005, 10h56
  5. pb de requête de tri
    Par devalender dans le forum SQL
    Réponses: 4
    Dernier message: 08/09/2004, 15h28

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