Trier avec union - SQL/NoSQL - Programmation
Marsh Posté le 18-07-2014 à 16:06:50
suffit de faire
select numpage, titre from
((SELECT numpage, titre FROM NEW_Pages WHERE titre LIKE '%machin%' )
UNION
(SELECT numpage, titre FROM NEW_Pages WHERE contenu LIKE '%machin%' )) a
order by titre;
Marsh Posté le 18-07-2014 à 16:08:52
il te suffit de trier ton union sur le champ titre
(SELECT 'U1', numpage, titre FROM NEW_Pages WHERE titre LIKE '%machin%' ORDER BY titre)
UNION
(SELECT 'U2', numpage, titre FROM NEW_Pages WHERE contenu LIKE '%machin%' ORDER BY titre)
ORDER By titre
Guillaume
Marsh Posté le 18-07-2014 à 16:11:00
Je viens de voir que j'ai posté plus tardivement que ddr555 ...
sur As400, on a pas besoin de faire ce que tu fais ddr555
Marsh Posté le 18-07-2014 à 19:39:55
J'ai plutot l'impression que la demande c'est d'avoir tous les resultats de la premiere requete, tries entre eux, puis ceux de la seconde, tries entre eux.
Si c'est ca, dans la requete du premier poste, il suffit de changer le UNION (qui trie et enleve les lignes en double) en UNION ALL (qui se contente de tout mettre a la suite sans chercher a comprendre):
(SELECT numpage, titre FROM NEW_Pages WHERE titre LIKE '%machin%' ORDER BY titre) |
Autre option, si on veut garder le UNION a tout prix:
SELECT numpage, titre |
EDIT: en fait non car je suppose qu'il faut quand meme virer les resultats doubles. Du coup un truc comme ca?
SELECT numpage, titre |
RE-EDIT: fix des parentheses
Marsh Posté le 18-07-2014 à 20:09:15
Oui en effet, je veux les résultats de la première triés suivis des résultats de la secondes triés eux aussi et pas les resultats des 2 ensembles et triés. Les doublons, j'y avais pas pensé mais en effet, je les veux pas
Je teste ça mardi
Merci en tous cas
Marsh Posté le 24-07-2014 à 12:49:28
J'ai testé avec le union all (tant pis pour les doublons) mais ça ne marche pas c'est toujours trié sur la clé primaire plutôt que sur le titre
Marsh Posté le 24-07-2014 à 21:23:44
zezette ton order by n'est pas au bon endroit:
(select1
union
select2)
order by titre...
je ne sais même pas si les orders by dans les unions servent à quelques choses...à voir
Guillaume
Marsh Posté le 25-07-2014 à 09:48:10
Ca, ça trie bien par ordre alphabétique mais résultats du select 1 et 2 mélangés. Le but ici est de trier le select1 et d'y coller les résultats du select2 sans les doublons qui seraient déjà dans le select1.
J'essaie la 2e solution de lasnoufle
Marsh Posté le 25-07-2014 à 10:04:39
J'ai donc testé la 2e solution de lasnoufle un peu modifiée car il y a une erreur :
Code :
|
Ca marche, les résultats sont triés comme je veux, mais... il y a des doublons
Marsh Posté le 25-07-2014 à 10:15:18
J'ai trouvé
Code :
|
Merci à tous pour votre assistance
Marsh Posté le 18-07-2014 à 15:30:20
Bonsoir à tous,
Je fais la requete suivante :
Le but étant que si le mot est dans le titre, le résultat soit avant que si le mot est dans le contenu, mais qu'il y ait quand même deux ordres alphabétiques (je sais pas si je suis clair )
Pas d'erreur mais les résultats sont triés par ID...
Une idée ?
Message édité par zezette le 18-07-2014 à 15:33:23
---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes