salut, voilà ma requête :
select * from grilles_items gi
left join groupes g on g.record_id = gi.groupes_id
left join criteres c on c.groupes_id = g.record_id
and c.record_id in (case g.types_groupe_id when 3 then gi.valeur end)
where gi.grilles_id = 677
g.types_groupes peut soit être du texte normal soit des nombres séparés par des virgules donc pour un in pas de pb mais visiblement ca lui en pose un car il me sort qu'il ne peut pas transformer la valeur '489, 493' vers une colonne de type int ...
pourtant ce sont bien des entiers séparés par virgules et la clause est 'in' donc tout devrait marcher.
j'ai cherché une fonction de type 'eval' ou équivalent en t-sql, mais pas moyen de mettre la main dessus ...
une solution ?
Publicité
Posté le 30-01-2004 à 20:48:03
MagicBuzz
Posté le 31-01-2004 à 00:00:23
si c'est un champ, le SGBD prend sa valeur pour une valeur unique, pas pour une liste.
Ton truc ça reviens à faire :
in ('3, 2, 4, 5')
et non pas :
in (3, 2, 4, 5)
bill_clinton
nonon j'ai pas de stagiaire ..
Posté le 31-01-2004 à 04:32:26
le pb c'est que 'in (3,5,6,7)' marche
mais 'in champ' avec champ = (3,5,6,7) marche pas ..
Message édité par bill_clinton le 31-01-2004 à 04:32:49