Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 21h28   #1
Membre du Club
 
Inscription : novembre 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 132
Points : 44
Points : 44
Par défaut Requête retournant certains enregistrement à la fin

Salut,

J'ai une table "matable" qui contient un champs "momchamps".

monchamps contient des valeurs entières de 1 à 10.

J'ai une requête qui utilise un order by sur plusieurs champs autres que monchamp.

Est ce que c'est possible de modifier la requête de manière à avoir toujours les

enregistrement dont la valeur de monchamp est égale a 4 a la fin.

Merci
helpcomm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 21h51   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Code :
ORDER BY case when monchamp = 4 then 1 else 0 end , liste des autres champs
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 21h54   #3
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Avec un DECODE dans le ORDER BY éventuellement.
Ici, pour le tri, on fait comme si 4 était remplacé par 99999, qu'on considère supérieur à toute valeur réelle possible :
Code :
1
2
3
SELECT num 
FROM (SELECT trunc(dbms_random.value*10) num FROM dual connect BY rownum <10) 
ORDER BY decode(num, 4, 99999, num);
Code :
1
2
3
4
5
6
7
8
9
10
11
      NUM
---------
        2
        5
        5
        7
        8
        9
        9
        4
        4
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 21h57   #4
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Citation:
Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
Code :
ORDER BY case when monchamp = 4 then 1 else 0 end , liste des autres champs
Avec ça, pas besoin d'inventer une valeur supérieure bidon comme je l'ai fait, mais les données autres que le 4 ne sont pas triées, ce qui à mon avis fait quand même partie de la demande.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 16h44   #5
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Citation:
Envoyé par Pomalaix Voir le message
Avec ça, pas besoin d'inventer une valeur supérieure bidon comme je l'ai fait, mais les données autres que le 4 ne sont pas triées, ce qui à mon avis fait quand même partie de la demande.
Si on veut trier comme ça :
Code :
ORDER BY case when monchamp = 4 then 999 else monchamp end , liste des autres champs
Mais ce dernier point n'est pas clair pour moi dans la demande.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h32.


 
 
 
 
Partenaires

Hébergement Web