Bonjour à tous,
ne tâtant que peu de SQL j'aimerais solliciter votre avis sur une tentative d'optimisation de requêtage sur une seule table.
La table A a deux champs, id et name. Tous les enregistrements sont censés exister en "couples", c'est à dire que name a une valeur qui se termine soit par "-AAA", soit par "-BBB".
Mon besoin est de retrouver tous les couples d'enregistrement correspondant à la règle de nommage "xxx-AAA" et "xxx-BBB".
La manière la plus simple mise en place est d'abord de chercher tous les "xxx-AAA" :
et pour chaque ligne retournée chercher s'il existe l'autre élément du coupe "xxx-BBB" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT name, id from table where name like '%-AAA';
où [name] est le suffixe du name de la première requête amputé du '-AAA'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT name, id from TABLE where name = '[name]-BBB';
Pour être honnête ça me parait terrible. A mesure que le nombre de couples augmentent, ca augmente tout d'autant le nombre de requêtes. J'ai le sentiment que quelque chose de bien mieux est possible mais j'ai beau creuser du côté des sous-requêtes, de exists, et d'autres choses je n'ai pas le déclic.
Donc si vous avez une idée qui vous saute aux yeux.
Partager