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 :

ORDER BY max d'infos avec plusieurs OR


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut ORDER BY max d'infos avec plusieurs OR
    Bonjour à tous,

    Je vais tenter d'expliquer ma problématique simplement.

    Je fais une requête avec plusieurs OR me ressortant des infos sur des utilisateurs (caractéristiques propre à chacun des users).
    Le problème est que cette requête se présente comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM maTable 
    WHERE maTable_info1 = "test" 
      OR maTable_info2 = "test2" 
      OR maTable3 = "test3"
    Les résultats en sortie, tous les utilisateurs ayant au moins un des critères dans l'ordre.

    Seulement je souhaiterais ordonner de cette manière : plus l'user à d'infos (ex : un user remplis les deux conditions maTable_info2 = "test2" et maTable3 = "test3"), mieux il est placé dans les résultats.

    Je ne sais pas si je me suis bien exprimé.

    Si vous voyez une solution, merci d'avance

  2. #2
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Par défaut
    Bonsoir,

    Je pense qu'il faut simplement compter le nombre de critères vérifiés et faire le trie dessus.

    Quelque chose comme ceci (syntaxe MySQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
      colX,
      colY, 
      IF(maTable_info1 = 'test', 1, 0) +
      IF(maTable_info2 = 'test2', 1, 0) +
      IF(maTable3 = 'test3', 1, 0) AS tri
    FROM maTable 
    WHERE 
      maTable_info1 = 'test' 
      OR maTable_info2 = 'test2' 
      OR maTable3 = 'test3'
    ORDER BY tri DESC

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Citation Envoyé par Oishiiii Voir le message
    Bonsoir,

    Je pense qu'il faut simplement compter le nombre de critères vérifiés et faire le trie dessus.

    Quelque chose comme ceci (syntaxe MySQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
      colX,
      colY, 
      IF(maTable_info1 = 'test', 1, 0) +
      IF(maTable_info2 = 'test2', 1, 0) +
      IF(maTable3 = 'test3', 1, 0) AS tri
    FROM maTable 
    WHERE 
      maTable_info1 = 'test' 
      OR maTable_info2 = 'test2' 
      OR maTable3 = 'test3'
    ORDER BY tri DESC

    Merci de ta réponse rapide.

    J'ai un peu de mal à comprendre ton fonctionnement avec les if + if.... Tu pourrais m'expliquer stp ?

    Merci encore.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Pour info j'ai réduis la requête, mais ta soluce fonctionnerais sur une dizaine de IF?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Par défaut
    Parfait, après test ta soluce semble fonctionner ! Merci !

    Maintenant, aurais-je un moyen de récupérer le nombre de réponse par user, par exemple un user répond à 2 critère, un autre à 3 critères, comment récupérer ces infos ?

    Merci d'avance.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    J'ai l'impression qu'il y a un problème de modélisation des données pour que tu sois obligé de sortir une telle requête !

    On peut avoir la structure réelle de la table ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/05/2015, 02h38
  2. Valeur MAX avec plusieurs condition
    Par Beaudelicius dans le forum Excel
    Réponses: 2
    Dernier message: 18/10/2013, 19h36
  3. order by avec plusieurs parametres
    Par calou_33 dans le forum SQL
    Réponses: 2
    Dernier message: 01/09/2009, 12h10
  4. ProgressBar avec plusieurs procédures
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/09/2002, 19h03
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 16h57

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