Where in XML - SQL/NoSQL - Programmation
Marsh Posté le 01-08-2008 à 15:39:32
euh... un peu trop même.
j'ai un mal de chien à tenter de comprendre :
1/ ce que tu veux faire
2/ ce qu'il se passe
grossomodo :
Code :
|
d'après l'indentation (complètement surréaliste) de tes parenthèses, c'est ce que je comprends.
donc là, le AND de la fin est toujours évalué.
par contre le IN n'est bloquant que si ni param is null et ni rowcount = 0
déjà, les () autour d'un OR, ça sert à rien quand il est précédé d'un autre OR.
bon, toi, tu veux que ça fasse quoi ? (parceque ta phrase "mon problème est que ..." est parfaitement imbittable, encore plus que tes parenthèses imbriquées )
Marsh Posté le 01-08-2008 à 15:43:29
Ah oué bon dsl
Donc en faite je balance en parametre un truk XML qui ressemble a ca <root><MotsCles><MotCleId>1</MotCleId></MotsCles></root>
et je ve tester si dans mon select * from article AS A WHERE A.MotCleId is in (SELECT * FROM XML) MAIS UNIQUEMENT si mon select from XML n'est pas vide...
D'ou le test du rowcount = 0 savoir si mon select retourne bien quelque chose.
Marsh Posté le 01-08-2008 à 15:53:51
or (SELECT count(*) FROM @Params.nodes('/root/MotsCles/MotCleId')) = 0
ça serait pas plus propre ?
Marsh Posté le 01-08-2008 à 15:54:58
(éventuellement, @params.nodes étant un nodelist, regarde dans la doc si peux pas pas faire un truc genre @params.nodes.count = 0 qui sera encore plus propre)
Marsh Posté le 01-08-2008 à 16:12:42
Yes merci, bon pour le Count j'ai pas trouver de sujet sur google,
ensuite faut rajouter un AS sinon il veux pas
Voila j'ai finit ma requete de 120 lignes
Je te remercie pour ton aide
Marsh Posté le 04-08-2008 à 17:14:52
Sinon je voulais savoir niveau perf ce que vaux cette technique ?
Parce que je monte vite a 2sec ( 4 types en xml )
et je ne peut pas me le permettre ( 0.5sec a tout cassé )
par exemple faire un in @texte avec des spectateur ? et pas in @XML
genre je passe @texte = 3 4 5 6
et regarder si l'id et dans ma chaine de caractère ? est ce que ca prendrai pas moins de temps et est ce faisable ?
Marsh Posté le 01-08-2008 à 15:21:27
Bonjour,
Voila j'essaie de faire une requête de recherche assez poussé sur du SQL Server 2005 (crosoft)
Le soucis c'est que mon where est pas encore tout a fait au point :
Et le soucis c'est que j'ai mon OR params ou rowcount qui se tick a chaque fois lorsque je passe les attribut XML concerné.
Mon probleme est que Si le select FROM xml est vide ca ne bloque pas la suite ( du coup que ca ne fasse pas le IN en faite )
Voila j'espere avoir etait suffisament conci