Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2364 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Where in XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Where in XML

n°1767886
korben31
Posté le 01-08-2008 à 15:21:27  profilanswer
 

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 :

Code :
  1. WHERE
  2.    (
  3.    (
  4.  (AMC.MotCleId in
  5.   (SELECT ParamValues.MotCleId.value('.','VARCHAR(50)')
  6.    FROM @Params.nodes('/root/MotsCles/MotCleId') as ParamValues(MotCleId)))
  7.    OR ((@Params IS NULL)
  8.    OR (@@ROWCOUNT = 0))
  9. )
  10. AND
  11. (...[dautre requete pareil])
  12. ))


 
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

mood
Publicité
Posté le 01-08-2008 à 15:21:27  profilanswer
 

n°1767900
MagicBuzz
Posté le 01-08-2008 à 15:39:32  profilanswer
 

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 :
  1. SELECT *
  2. FROM x
  3. WHERE
  4. (
  5.  motcleid IN
  6.  (
  7.    SELECT id FROM something
  8.  )
  9.  OR
  10.  (
  11.    params IS NULL
  12.    OR rowcount = 0
  13.   )
  14. )
  15. AND someothertest


 
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 :o)


Message édité par MagicBuzz le 01-08-2008 à 15:40:50
n°1767905
korben31
Posté le 01-08-2008 à 15:43:29  profilanswer
 

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.


Message édité par korben31 le 01-08-2008 à 16:12:33
n°1767914
MagicBuzz
Posté le 01-08-2008 à 15:53:51  profilanswer
 

or (SELECT count(*) FROM @Params.nodes('/root/MotsCles/MotCleId')) = 0
 
ça serait pas plus propre ?

n°1767915
MagicBuzz
Posté le 01-08-2008 à 15:54:58  profilanswer
 

(é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)


Message édité par MagicBuzz le 01-08-2008 à 15:55:26
n°1767926
korben31
Posté le 01-08-2008 à 16:12:42  profilanswer
 

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 :p
Je te remercie pour ton aide

n°1769070
korben31
Posté le 04-08-2008 à 17:14:52  profilanswer
 

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 ?


Message édité par korben31 le 04-08-2008 à 17:46:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Where in XML

 

Sujets relatifs
Aide pour XMLRemplir BDD mysql a partir d'un fichier XML
Question XSD/XMLcondition where : recherche par mot clé
[C# XML Serialize .net 2.0][Perl ou Java?] Comment cacher la valeur d'un attribut dans du XML
[resolu] Ajax et XML. Mon script ne fonctionne pas.bases sur J2EE et le XML
Fichier XML Ajout/Suppression de ligne[MYSQL] Clause WHERE foireuse ?
Plus de sujets relatifs à : Where in XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR