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 :

Classement de données


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut Classement de données
    Bonjour à tous,

    Dans le cadre de mes études je dois réaliser un mini projet qui permet de déterminer la similarité
    de deux séries TV données (en fonction de leurs sous-titres). J'ai pratiquement tout fini sauf un tout petit détail dans l'affichage.

    En gros j'arrive a sortir la similarité entre une série donnée et toutes les autres de la base de données mais je suis sensé les classés par ordre décroissant de similarité.

    Le problème est que je ne sais absolument pas comment classer des données sans tableau intermédiaire. Existe-t'il quelque chose de tel en SQL (Oracle) ? Une quelconque astuce ? Ou simplement quelque chose a laquelle je n'ai pas pensé.


    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
    CREATE OR REPLACE PROCEDURE proc_list_similar_TVseries (
    u_serie IN VARCHAR2) 
    AS   
    CURSOR c_series IS SELECT * FROM Series;   
    series_row c_series%ROWTYPE;   
    u_idS NUMBER;   
    name_temp NUMBER;   
    sim FLOAT; 
    BEGIN   
    u_idS := func_gets_id(u_serie);  // Recupere idS de la serie passée en paramètre
    OPEN c_series;   
    LOOP      
    FETCH c_series INTO series_row;    // Boucle sur toutes les séries 
    EXIT WHEN c_series%NOTFOUND;       
    IF series_row.idS <> u_idS THEN    // Test pour ne pas comparer la série a elle meme
    sim := func_similarity(series_row.idS,u_idS);       // On recupère la similarité
    DBMS_OUTPUT.PUT_LINE(series_row.name || '  ->  ' || round(sim,3));       
    END IF;   
    END LOOP; 
    END proc_list_similar_TVseries;


    Comme vous pouvez le voir j'ai dans la variable sim mes similarite mais comme je les print directement elles ne sont pas classées.

    Merci de votre aide.

    Djodjino

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    En incorporant le calcul dans la requête il sera possible de faire un ORDER BY, quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE PROCEDURE proc_list_similar_TVseries (u_serie IN VARCHAR2) 
    AS  
    begin
    for c in (SELECT liste_colonne,
                     (select func_similarity(s.idS,u.u_idS) from dual) as sim
                FROM Series s
               cross join (select func_gets_id(u_serie) as u_ids from dual) u
               where s.idS <> u.u_ids
               order by sim desc
             ) loop
        DBMS_OUTPUT.PUT_LINE(c.name || '  ->  ' || round(c.sim,3));
    end loop;
    end proc_list_similar_TVseries;
    Sinon Oracle TEXT a une fonction score.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    Merci, cela fonctionne parfaitement.

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

Discussions similaires

  1. [AC-2000] Classement de données : Type Formulaire de donnée
    Par GorMsoN dans le forum IHM
    Réponses: 1
    Dernier message: 24/09/2009, 13h21
  2. [Tableaux] Classement de donnée dans un tableau
    Par PunkMetal dans le forum Langage
    Réponses: 6
    Dernier message: 19/02/2009, 21h51
  3. Aide, classement de données
    Par ozcriss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2008, 16h46
  4. Classement des données d'une liste modifiable
    Par marinef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2008, 10h36
  5. Réponses: 1
    Dernier message: 23/12/2006, 23h39

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