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

PL/SQL Oracle Discussion :

Ordre dans tri d'une requête


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut Ordre dans tri d'une requête
    Bonjour,
    J'ai une requête qui a un comportement différent lorsqu'elle est exécutée dans un package PL/SQL. Le tri semble être différent.
    Si quelqu'un pouvait m'éclairer sur ce comportement inquiétant ? Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT colonne_1,  colonne_2
    FROM (
          SELECT Typec, colonne_1, colonne_2
          FROM
          (
                 	SELECT 1 as Typec, colonne_1, colonne_2
                 	FROM Table1
    		UNION
                    SELECT 2 as Typec, colonne_1, colonne_2
                 	FROM Table2
    		UNION
                    SELECT 3 as Typec, colonne_1, colonne_2				 
                    FROM Table3      
        	)
    	ORDER BY Typec
    )
    Where Rownum <2;

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Typec a toujours la valeur 1 et l'order by n'est que sur Typec donc c'est normal que ce ne soit pas trié sur le reste, non ?
    Cordialement,
    Franck.

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    PL/SQL utilise le moteur SQL pour exécuter ses requêtes et le tri est effectué par le moteur SQL. Mais des paramètres différents au niveau des sessions qui se connectent et exécutent les requêtes via SQL ou Pl/SQL peuvent donner le comportement que vous avez observé.

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut Probème union plutôt que tri
    Je pense qu'il ne s'agit pas d'un problème de tri.
    J'exécute ma requête UNION manuellement : Tout ok

    J'ai modifier mon package pour la transformer en un curseur, elle ne ramène qu'un seul enregistrement le dernier UNION. Même avec un UNION ALL.Incompréhensible .

  5. #5
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Il serait peut-être intéressant de poster votre package, l'erreur vient peut-être de là.

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Magadrig Voir le message
    ...
    J'ai modifier mon package pour la transformer en un curseur...
    Cela nous indique bien que vous avez quelques lacunes concernant l’exécution des requêtes SQL via le moteur PL/SQL.

    Postez un jeu d’essaie complet : création des tables alimentation avec des données, requêtes, résultat attendu, anomalie constaté.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut
    En fait, il faut savoir qu'à partir du moment où l'on limite le retour avec un rownum, l'order by s'applique uniquement sur le résultat du rownum.
    En bref, Oracle récupère les données dans n'importe quel ordre et c'est lorsqu'il a fini de tout récupéré (en prenant en compte aussi le rownum) que l'order by est appliqué.
    Pour éviter cela, il est préférable de passer par un curseur et de s'arrêter au 2ème enregistrement.

Discussions similaires

  1. Extraire d'une portion de chaîne dans SELECT d'une requête
    Par Anne1969 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 16/03/2006, 08h29
  2. [MySQL] Mauvais ordre de résultat d'une requête
    Par licorne dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 06/03/2006, 16h47
  3. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43
  4. Réponses: 7
    Dernier message: 20/10/2004, 08h26
  5. Tri d'une requête UNION
    Par MasterOfChakhaL dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/08/2004, 10h26

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