Bonjour,
Mon problème est assez simple, mais sa résolution relève du casse-tête chinois. J'utilise Oracle pour ce problème, mais celà importe peu...
J'ai deux tables, une table Methode et une table Paramètre. Comme vous vous en doutez, une jointure externe existe entre les deux tables : à une méthode est associé un ou plusieurs paramètres.
Je souhaite afficher sur une ligne dans un tableau (une IHM) la méthode avec ses paramètres.
Pour celà, je fais un :
select m.id, p.id from methode m, parametre p where m.id =(+) p.id
(+) est ma jointure externe pour ceux qui veulent une description du SQL d'il y a 15 ans.
Et mon algo pour afficher les méthode et ses paramètres est :
curseur = maRequeteSelect
pour i=1 à nbLignesAffichables fairepk = m.idfin pour
afficher m.met, p.par
curseur.suivant
tant que m.id = pk faireafficher p.parfin tant que
curseur.suivant
changer de ligne dans le tableau
Celà marche très bien.
L'autre information est que les tables utilisées sont très grandes, et donc je ne peux pas les mettre entièrement en mémoire.
Mon défit est maintenant de trier mon tableau par paramètre :
si j'ai une méthode avec deux paramètres 'aaa' et 'zzz' elle sera affichée avant la méthode avec les paramètres 'bbb' et 'truc'.
Si j'utilise la requête précédente en faisant un order by p.id, les m.id se retrouvent logiquement éparpillés dans les tuples résultants. Et donc mon algo ne marche plus. Et je peux difficilement parcourir les autres tuples à la recherche des autres paramètres, car les tables font plusieurs millions de tuples...
Une idée ?
Partager