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
Partager