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 sur une requête


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut Tri sur une requête
    Bonjour tout le monde,

    Je m'adresse a vous les experts

    Je cherche à faire une requête qui dirait ceci :
    Classer de la note la plus grande ayant un nb_avis > 1 à la plus petite ayant un nb_avis > 1 puis ensuite les notes de la plus grande à la plus petite avec un nb_avis >= 0
    Auriez vous une idée ?
    Merci

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour PIEPLU,

    Pourrais-tu ajouter des exemples, voir les DDL avec un jeu d'essais ?

    Parce que là, pour ma part, j'ai du mal à comprendre....


  3. #3
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Voici pour le moment comment c'est :

    http://www.justacote.com/TESTresulta...ordre=preferes

    Résultat1, 4/5 avec 1 avis
    Résultat2, 1/5 avec 2 avis
    Résultat3, 1/5 avec 2 avis
    Résultat4, 1/5 avec 1 avis
    Je voudrais recréer ce classement.

    Je souhaite afficher en premier les résultats par notes décroissantes où le nombre d'avis est supérieur à 1. Dans l'exemple précédent, je voudrais obtenir :

    Résultat2 ; Résultat3, Résultat1 ; Résultat4

    J'espère être plus clair

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Ben oui, là c'est plus clair mais sans les noms de colonnes de tes tables

    Donc ta requête doit récupérer la note et le nombre d'avis....

    Dans ton ORDER BY tu mets en premier le nombre d'avis puis la note ! Le tout en décroissant.

    Ah précise aussi ton SGBDR car il me semble (Au travers de ma boule de cristal ^^) que ce serait du MySQL avec du PhP et du Java


  5. #5
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Oui, mysql et php mais pas de Java.

    Ce que tu dis ne va pas donner les résultats espérés.
    Je vais faire autrement, j'ai un champs moyenne qui est tantot rempli, tantot vide.

    Est ce possible de classer tout ceux qui sont rempli par DESC (moyenne) puis ensuite, prendre par rapport à une note (note_entreprise)

    Pour le moment, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ORDER_BY = "ORDER BY E.moyenne DESC, E.nb_notes_entreprise DESC";
    Ca rempli bien la première condition, mais pas la suivante.

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Heu, oui

    Pourquoi mets tu 2 fois "DESC" dans ta clause ORDER BY ?

    Tu peux vraiment pas nous donner tes tables et un jeu d'essai avec la requête car là on va tourner en rond un moment


  7. #7
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Désolé mais les tables sont trop grosses.
    Je vous ai tout expliqué là

    Merci encore

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Et sérieusement, on peut voir la requête que vous avez écrite ?
    On ne vous demande pas le contenu des tables, on vous demande de quoi vous aider, le noms de vos tables, des colonnes et cetera.

  9. #9
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    J'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM `Entreprises`
    WHERE 1
    ORDER BY IF( `avis_entreprise` >1, 2, IF( `avis_entreprise` >=0, 1, 0 ) ) DESC
    LIMIT 0 , 30
    Vous pouvez m'expliquer le ORDER BY car je ne le comprend pas bien !

    Merci

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Cette partie consiste à :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    si avis_entreprise > 1
      alors retourner 2
      sinon
        si avis_entreprise >= 0
          alors retourner 1
          sinon retourner 0
      fsi
    fsi
    Et de faire le tri (ORDER) sur cette valeur renvoyée (en DESC). Donc d'avoir d'abord tous les enregistrements où le nombre d'avis est > 1 puis ceux >= 0 (0 ou 1).

    Vu qu'on ne peut avoir un nombre d'avis < 0, on pourrait n'utiliser qu'une condition en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(`avis_entreprise` >1, 1, 0) DESC

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

Discussions similaires

  1. Tri d'une requête sur une valeur ou une autre
    Par mims1664 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/08/2009, 18h40
  2. Colle sur un tri dans une requête linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2009, 11h01
  3. Tri sur une requête complexe
    Par erehcab dans le forum Requêtes
    Réponses: 6
    Dernier message: 29/10/2008, 16h38
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 09h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 02h17

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