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

SQL Oracle Discussion :

Sort sur table générique non fixée.


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut Sort sur table générique non fixée.
    Bonjour,

    J'ai une table ayant la structure suivante :
    Code sql : 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
    18
    19
    20
    21
    22
    23
    24
    create table con_ma_table_donnee_ajoutee (
    ID NUMBER(8,0) NOT NULL ENABLE,
    ID_ENTITY	NUMBER(8,0),
    CODE_DONNEE_TABLEAU VARCHAR2(6 BYTE) NOT NULL ENABLE, 
      CODE_DONNEE_01 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_01 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_02 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_02 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_03 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_03 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_04 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_04 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_05 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_05 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_06 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_06 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_07 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_07 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_08 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_08 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_09 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_09 VARCHAR2(4000 CHAR), 
      CODE_DONNEE_10 VARCHAR2(6 BYTE), 
    VALEUR_DONNEE_10 VARCHAR2(4000 CHAR));

    L'idée est d'avoir une table où la valeur #X est associée au code #X.
    J'aimerai faire une requête SQL où je trie le résultat par rapport aux valeurs qui sont associée au code égale une valeur fixe.
    Mon problème est que ce code peut-être dans le code #1 ou #5 ou être nul part en fonction de la ligne (Youpi !)
    Comment faire ma requête pour avoir un trie propre ?


    Une personne aurai-elle déjà faire quelque chose approchant ? Si oui, comment ?

    Sinon, je prendre toutes idées sur le sujet.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Bonjour,
    Pour moi ton problème vient du fait que la table n'est pas bien modélisée.
    Je partirai plutôt vers ceci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create table con_ma_table_donnee_ajoutee (
    ID NUMBER(8,0) NOT NULL ENABLE,
    ID_ENTITY	NUMBER(8,0),
    CODE_DONNEE_TABLEAU VARCHAR2(6 BYTE) NOT NULL ENABLE,
    RANG INTEGER not null, // à voir le type exacte
      CODE_DONNEE VARCHAR2(6 BYTE), 
    VALEUR_DONNEE VARCHAR2(4000 CHAR), 
    );
    Ainsi tu ne te poses plus la question "mais dans quelle colonne se trouve ma donnée" ?
    Tatayo.

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    L'idée es d'avoir :

    Enregistrement 1 :
    Id = 1
    ID_ENTITY = AA
    CODE_DONNEE_TABLEAU =MON TABLEAU
    CODE_DONNEE_01= A
    VALEUR_DONNEE_01 = 1
    CODE_DONNEE_02= B
    VALEUR_DONNEE_02 = 1
    CODE_DONNEE_03= C
    VALEUR_DONNEE_03 = 1
    Enregistrement :

    Enregistrement 2 :
    Id = 2
    ID_ENTITY = AA
    CODE_DONNEE_TABLEAU =MON TABLEAU
    CODE_DONNEE_01= C
    VALEUR_DONNEE_01 = 2
    CODE_DONNEE_02= B
    VALEUR_DONNEE_02 = 2
    CODE_DONNEE_03= A
    VALEUR_DONNEE_03 = 2
    Enregistrement 2 :
    Id = 3
    ID_ENTITY = AA
    CODE_DONNEE_TABLEAU =MON TABLEAU
    CODE_DONNEE_01= C
    VALEUR_DONNEE_01 = 3
    CODE_DONNEE_02= A
    VALEUR_DONNEE_02 = 3
    CODE_DONNEE_03= B
    VALEUR_DONNEE_03 = 3
    Et d'être capable de trier par rapport à la valeur associée le code donnée A / B ou C.

    Sachant qu’effectivement si le code de la données est toujours dans la même colonne, cela simplifie beaucoup la problématique. Cela donne beaucoup de flexibilité par ailleurs.

    La question est de savoir comment faire à partir de cette structure et non de la changer pour simplifier.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Peut-être avec un CASE:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    selectfrom con_ma_table_donnee_ajoutee
    whereorder by (case when CODE_DONNEE_01 = 'A' then VALEUR_DONNEE_01 when CODE_DONNEE_02 = 'A' then VALEUR_DONNEE_02 when … etc jusqu'à 10 END)
    Tatayo.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    On peut aussi remettre la table à l'endroit, filtrer puis trier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      select *
        from con_ma_table_donnee_ajoutee
     unpivot ( (code_donnee, valeur_donnee)  for lvl  in ((CODE_DONNEE_01, VALEUR_DONNEE_01) , (CODE_DONNEE_02, VALEUR_DONNEE_02) , (CODE_DONNEE_03, VALEUR_DONNEE_03)))
       where code_donnee = 'A'
    order by valeur_donnee asc;

Discussions similaires

  1. Requête sur table liée non nulle
    Par MistyMan dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/02/2009, 12h44
  2. etat sur une table externe non liée
    Par Eruil dans le forum IHM
    Réponses: 0
    Dernier message: 10/06/2008, 10h21
  3. Réponses: 1
    Dernier message: 08/03/2008, 17h25
  4. [RegEx] Requête SQL sur tables non connues à l'avance (regex)
    Par lothar59 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 10h33
  5. conditionnelle sur table access vide ou non
    Par SylvainJ dans le forum Access
    Réponses: 4
    Dernier message: 24/07/2006, 15h10

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