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: