Faire une recherche triée

Résolu/Fermé
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 - 5 mars 2014 à 12:01
Blockiestbeatle Messages postés 84 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 20 mars 2014 - 5 mars 2014 à 13:04
Bonjour,
Je me retrouve un peu embêté. je m'explique :
J'ai un projet sur lequel intervient des sondages et des groupes. Je dois pouvoir faire une recherche par mots clé. Cette recherche doit porter sur mon titre de sondage et sur mon nom de groupe. Le truc c'est que j'aimerais obtenir la liste des titre de sondages et de nom de groupes par ordre alphabétique.
En gros par exemple j'ai dans ma table les sondages :
-Conjoint
-Architecture
-Poisson

et les groupes :
-Communication
-Elite

et je voudrais le résultat sous la forme :
-Architecture
-Communication
-Conjoint
-Elite
-Poisson


Par ordre alphabétique mais sur deux attributs de deux tables. C'est possible à faire en SQL ?

2 réponses

Blockiestbeatle Messages postés 84 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 20 mars 2014 5
5 mars 2014 à 12:10
Bonjour,

Le sql ça fait longtemps mais je peux essayer quand même!

Tu peux utiliser un ORDER BY en spécifiant plusieurs colonnes ça c'est sur, cela trie la première colonne et s'il y a des doublons dans celle-ci la deuxième colonne sera prise en compte, etc.

Bien sûr, pour ce faire tu dois avoir un lien entre ses deux tables pour en faire la jointure (peut importe le type).

Ce que je ne comprends pas bien c'est ton résultat voulu...? Tu voudrais mélanger les deux colonnes en une seule ou bien conserver les deux mais trier? Car je ne vois pas bien l'intérêt de les mélanger dans une seule!

Peux-tu préciser?

@+

Gilles
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
5 mars 2014 à 12:18
Justement, je pense pas qu'une jointure soit une bonne idée. En fait je vais pas avoir de rapport entre mes deux tables sauf le champs de recherche qui sera identique. Et dans l'idée je voudrais récupérer tous les noms de groupes et tous les sondages, les trier par ordre alphabétiques sans avoir de GROUP BY.
Merci pour la réponse rapide
0
Blockiestbeatle Messages postés 84 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 20 mars 2014 5
5 mars 2014 à 12:33
Ok ok.

Je vois mieux le résultat que veux. En gros, obtenir toutes les références qui correspond à la valeur à rechercher, peut importe la colonne (ici Groupe et Sondage).

Très honnêtement dans une requête je ne sais pas si cela est possible... les résultats tu les affichent directement? (Genre console output ou terminal) Ou bien tu les récupère dans une application? (Java, .net,...)

Si c'est un affichage direct, je ne pense pas pouvoir t'aider, voir même te dire si c'est possible, pour l'affichage après ça on peut joindre nos résultats dans une même liste avant de faire un tri alphabétique, peu importe la nature de l'élément!

Je regarde un peu de mon côté!
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
5 mars 2014 à 12:35
En gros il faudrait que je traite ça en php avant d'effectuer l'affichage (qui sera direct). A la base ma question était surtout de savoir si je pouvais me simplifier la vie en le traitant en SQL. en tout cas merci de ton aide.
0
Blockiestbeatle Messages postés 84 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 20 mars 2014 5
Modifié par Blockiestbeatle le 5/03/2014 à 12:44
Ok j'ai rien dis -_-'

SELECT NomColSondage Colonne_Result FROM Sondages
UNION
SELECT NomColGroupe Colonne_Result FROM Groupes
ORDER BY Colonne_Result

Note que cette manipulation ne peut fonctionner que si les types sont les mêmes, dans ton cas ce doit être bon!
En gros: Si tes types sont les même mais le nom des colonnes différent, il faut créé le même nom d'alias pour faire un order by dessus, les types étant égaux, la comparaison est possible.

Qu'en penses-tu?
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
5 mars 2014 à 12:59
Nickel ça marche. Pour résumer j'ai fait un petit AS :

SELECT nomgroupe AS resultat FROM groupe WHERE nomgroupe LIKE '%communication%'
UNION
SELECT titre As resultat FROM sondage WHERE titre LIKE '%communication%'
ORDER BY resultat ASC

merci pour ton aide très préciseuse :)
0
Blockiestbeatle Messages postés 84 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 20 mars 2014 5
5 mars 2014 à 13:04
oui oui le AS crée l'alias en effet!

Tant mieux si tout fonctionne!
0