Vous n'êtes pas identifié(e).
Pages : 1
Bonjour ,
Je souhaite réaliser la fonction suivante:
table 1 table 2
ctxt|biotypo esp|b1|b2.5|b3
1| b1 AA|1|null|1
2| b2.5 AB|4|2|null
3| b3 AC|null|null|3
Résultat attendu:
ctxt|esp|bio
1|AA|1
1|AB|4
2|AB|2
3|AA|1
3|AC|3
L'idée du coup serait de passer en variable le résultat de la requête de la tab 1 afin de sélectionner la colonne adéquate.
Avez vous des pistes?
Hors ligne
Vous ne pourrez pas avec une simple requête SQL. Il vous faut soit un programme externe soit une fonction stockée.
Guillaume.
Hors ligne
Vous ne pourrez pas avec une simple requête SQL. Il vous faut soit un programme externe soit une fonction stockée.
ok pour la fonction mais avez vous une idée de la forme qu'elle doit prendre?
Hors ligne
Il manque des informations sur ce que vous cherchez à faire exactement. Si vous voulez faire une requête spécifique sur des tables dont la structure est fixe (et donc modifier la requête en cas de changement de schéma), cela reste possible en sql. Par exemple:
select tab1.ctxt, tab2.esp,
case
when tab1.biotypo = 'b1' then tab2.b1
when tab1.biotypo = 'b2.5' then tab2."b2.5"
when tab1.biotypo = 'b3' then tab2.b3
end as bio
from tab1
join tab2 on
case
when tab1.biotypo = 'b1' then tab2.b1 is not null
when tab1.biotypo = 'b2.5' then tab2."b2.5" is not null
when tab1.biotypo = 'b3' then tab2.b3 is not null
end;
Veuillez noter que cette requête ne s'assure absolument pas que les données dans tab1 sont valides, et retournerait donc un peu n'importe quoi dans le cas où tab1.biotypo est invalide. C'est quelque chos que vous auriez à corriger, l'idée étant de simplement donner une approche qui pourrait marcher.
Veuillez noter également que les performances risquent d'être désastreuses dans le cas où beaucoup de données doivent être retournées. Vous pourriez probablement avoir de meilleures performances avec une approche à base de UNION ALL, avec une requête par "biotypo", mais en contrepartie vous auriez de mauvaise performance dans le cas où une clause WHERE excluerait la majorité des enregistrements.
Tous ces problèmes sont dû au format de stockage de vos données.
Julien.
https://rjuju.github.io/
Hors ligne
oui finalement autant reformater les tables.
merci en tout cas
Hors ligne
Pages : 1