[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

MySQL et OO.org_base: problèmes avec requêtes pluri-tabulaires



Bonsoir à tous,

Je dispose d'une base MySQL comprenant environ 90 champs et 25000 éléments (lignes), connectée à OpenOffice.org_base via JDBC. Cette base comporte une douzaine de champs "lieux", sous forme de codes INSEE. J'ai par ailleurs une table de correspondance codes_INSEE => noms_localités.

Faire afficher, par une requête OO_base, le contenu de la table principale avec les noms des localités d'un des champs "codes_lieux", n'a pas posé de problème: relation jointure créée entre les deux tables. La requête s'est exécutée en à peu près une minute.

Le problème, il commence dès qu'il est question de faire afficher les noms des localités, non plus d'un seul et unique champs "localité", mais de plusieurs (localité naissance, localité décès...). Avec deux tables, çà déconne déjà un maximum, comme décrit ci-après:

Ma première tentative fut de mettre deux tables sur le bureau de la requête, puis de créer deux liens entre les deux tables: l'un des champs de la table des correspondances des codes lieux était relié à deux des champs de la table principale. Lancement de la requête => une demi heure après, çà patinait toujours, alors je n'ai eu d'autre choix que de faire un #killall -KILL mysqld pour en sortir.

J'ai pensé que les deux liens depuis un même champs d'une des tables, c'était la cause du problème. Alors j'ai créé une troisième table, copie de la table de correspondance des codes_lieux, mais avec un nom et des noms de champs différents. Et à partir de là, j'ai donc fait usage des trois tables et donc dans chaque table il y avait un seul lien avec deux champs différents de la table principale. Même résultat, et obligation de #killall -KILL mysqld pour en sortir après une demi heure ou à peu près.

Alors, pour en avoir le coeur net, j'ai recommencé avec une base beaucoup plus petite, c'est à dire, la même base d'où j'avais effacé 24000 des 25000 lignes, n'en laissant qu'un millier.

Et là, le processus avec les trois tables et les deux liens, a fonctionné, après - tout de même - près de dix minutes d'attente.

Non seulement une telle attente est intolérable, et décourage toute tentative avec une base de taille "normale", mais encore, j'ai constaté une autre anomalie:

Ne s'affichent que les lignes pour lesquelles LES DEUX CHAMPS codes lieux sont renseignés ; celles pour lesquelles un seul champs est rempli ne s'affichent pas ! J'espérais que ma requête - concernant les deux champs - afficherait toutes les lignes, quitte à laisser vides les champs 'codes lieux' non remplis.

Il convient de préciser que, dans ma table principale, le premier champs 'localités', celui ayant fait l'objet du premier essai, est rempli pour chacun des enregistrements (lignes) de la table, alors que les autres champs 'localités' sont souvent vides, renseignés seulement dans certains cas.

Il est donc clair que je n'ai pas adopté la bonne méthode.

Merci d'avance pour vos lumières...


Reply to: