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 :

Problème de méthodologie


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème de méthodologie
    Bonjour

    mon problème est le suivant :

    en l'état actuel j'ai une table avec les données de ce type au niveau des attributs
    attr1|attr2|descriptif1|desc2| desc3|desc4|

    On stocke la comparaison entre des objets deux à deux (désignés ici par attr1 et attr2 )

    la table est donc remplie ainsi :

    A B val1 val2 val3 val4
    B A val1 val2 val3 val4
    Z W autres valeurs...
    W Z les mêmes autres valeurs
    et ainsi de suite

    J'aimerais donc diviser la taille de la table par 2 en n'ayant pas à stocker A B et B A mais une seule de ces 2 lignes.

    Sur la couche au-dessus , un utilisateur choisi les 2 objets dont il veut avoir les resultats et pour l'instant je stocke les 2 lignes car il peut choisir A puis B ou B puis A.

    Est-ce que je peux créer une sorte de couple (A,B) ? ( avec les Type? )

    J'espère m'être bien expliqué et ne pas être HS. merci !


    edit : sinon j'ai réfléchi et au niveau utilisateur je peux requêter avec un OR... c'est moins joli mais bon...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 38
    Points
    38
    Par défaut fonction analytique
    doit pour se faire avec la fonction lag :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    create table t (f1 number, f2 number);
    SQL>  insert into t values (1,2);
    1 row created.
    SQL> insert into t values (2,1);
    1 row created.
    SQL> insert into t values (3,4);
    1 row created.
    SQL> insert into t values (4,3);
    1 row created.
    SQL> insert into t values (5,6);
    1 row created.
    SQL> insert into t values (6,5);
    1 row created.
     
    SQL> select * from t ;
     
            F1         F2
    ---------- ----------
             1          2
             2          1
             3          4
             4          3
             5          6
             6          5
     
    6 rows selected.
     
     
    select f1,f2 from(
    select f1,F2, lag(f1) over( order by f1,f2 desc) f3 from t order by f1,f2)
    where f2=f3
    /
     
       F1    F2
    ----- -----
        2     1
        4     3
        6     5

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci c'est plus joli que mon OR

    on va dire résolu

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par toji~~ Voir le message
    Merci c'est plus joli que mon OR

    on va dire résolu
    C'est plus compliqué qu'un OR ou qu'un UNION mais est ce vraiment plus joli ?
    Surtout au niveau perf, tu lance un algorithme de fonction analytique qui ne doit pas être gratuit.
    En plus, cela ne répond pas au problème posé qui est : "donner la réponse avec une table ayant la moitié des lignes" et non pas "diviser par 2 le nombre de lignes"

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par jmguiche Voir le message
    Surtout au niveau perf, tu lance un algorithme de fonction analytique qui ne doit pas être gratuit.
    Au niveau Perf les fonctions analytique sont souvent plus performantes comme solution. Si J'ai été un grand sceptique, j'en suis devenu un fanatique.

    En plus, cela ne répond pas au problème posé qui est : "donner la réponse avec une table ayant la moitié des lignes" et non pas "diviser par 2 le nombre de lignes"
    Heu.... j'ai du mal a te suivre la.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de méthodologie sur l'utilisation des classes
    Par maxime.tuck dans le forum Général Python
    Réponses: 4
    Dernier message: 29/11/2013, 23h39
  2. Réponses: 9
    Dernier message: 05/04/2012, 12h26
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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