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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème dans une requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème dans une requête SQL

n°548805
jey_skywak​er
Jedi SWU
Posté le 23-10-2003 à 17:45:16  profilanswer
 

hello :)
 
Comme j'ai besoin de pas mal de screenshots pour expliquer mon pb, j'ai créé un fichier word qui récapitule tout ça : http://www.starwars-universe.com/i [...] y/HELP.zip
 
Merci d'avance à tout ceux qui pourront m'expliquer le pkoi du comment  :jap:


---------------
L'univers de Starwars est désormais à votre portée !
mood
Publicité
Posté le 23-10-2003 à 17:45:16  profilanswer
 

n°548833
Le Castor
Neurasténique...
Posté le 23-10-2003 à 18:30:55  profilanswer
 

J'y jette un coupe d'oeil...


---------------
W3C : Leading the Web to Its Full Potential... - Membre du W3C l33t club
n°548885
MagicBuzz
Posté le 23-10-2003 à 20:19:03  profilanswer
 

Ca donne quoi en résumé ? J'ai la flème d'installer Winzip :sleep:
 
(ouais, je sais, XP sait lire les zip, mais c'est juste pour faire chier mon monde en fait :D)

n°549317
jey_skywak​er
Jedi SWU
Posté le 24-10-2003 à 10:03:55  profilanswer
 

ah le chieur ;) :D
en gros c un comportement plutôt bizarre d'une requête SQL...Je donne toute mon estime à celui qui trouve la raison du pkoi du comment


---------------
L'univers de Starwars est désormais à votre portée !
n°549504
Mara's dad
Yes I can !
Posté le 24-10-2003 à 12:55:26  profilanswer
 

J'ai pas la solution mais :
 
( J'ai remplacé les @prompt par les valeurs pour faire plus lisible :D )
 
Déja, y'a un regroupement de AND qui ne sert à rien :
 

Code :
  1. SELECT
  2. MAP_SALES_AREA.SALES_ORG_CODE,
  3. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE,
  4. count( distinct TDS_INVOICE_LINE.INVOICE_NUMBER )
  5. FROM
  6. MAP_SALES_AREA,
  7. MAP_DOCUMENT_TYPE,
  8. TDS_INVOICE_LINE
  9. WHERE
  10. ( MAP_DOCUMENT_TYPE.END_DATE = '31/12/4712'  )
  11. AND  ( MAP_DOCUMENT_TYPE.BE_ID=TDS_INVOICE_LINE.DOC_CATEG_TYPE  )
  12. AND  ( MAP_SALES_AREA.BE_ID=TDS_INVOICE_LINE.SALES_AREA  )
  13. AND  ( MAP_SALES_AREA.END_DATE = '31/12/4712'  )
  14. AND  ( MAP_SALES_AREA.DIST_CHANNEL_CODE<> '20'  )
  15. AND  // <- Ce regroupement de AND ne sert à rien !
  16. (
  17.  (
  18.   MAP_SALES_AREA.SALES_ORG_CODE IN ('1158')
  19.     OR '%' IN ('1158')
  20.  )
  21.  AND
  22.  (
  23.   MAP_DOCUMENT_TYPE.DOC_TYPE_CODE IN ('YFDI')
  24.     OR '%' IN ('YFDI')
  25.  )
  26.  AND  MAP_DOCUMENT_TYPE.DOC_TYPE_CODE  IN  ('YF02', 'YFAV', 'YFIC', 'YFMS', 'YFNT', 'YIV1', 'YFMA')
  27. )
  28. GROUP BY
  29. MAP_SALES_AREA.SALES_ORG_CODE,
  30. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE


 
 
Donc çà devient :
 
La requête qui merde

Code :
  1. SELECT
  2. MAP_SALES_AREA.SALES_ORG_CODE,
  3. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE,
  4. count( distinct TDS_INVOICE_LINE.INVOICE_NUMBER )
  5. FROM
  6. MAP_SALES_AREA,
  7. MAP_DOCUMENT_TYPE,
  8. TDS_INVOICE_LINE
  9. WHERE
  10. ( MAP_DOCUMENT_TYPE.END_DATE = '31/12/4712'  )
  11. AND  ( MAP_DOCUMENT_TYPE.BE_ID=TDS_INVOICE_LINE.DOC_CATEG_TYPE  )
  12. AND  ( MAP_SALES_AREA.BE_ID=TDS_INVOICE_LINE.SALES_AREA  )
  13. AND  ( MAP_SALES_AREA.END_DATE = '31/12/4712'  )
  14. AND  ( MAP_SALES_AREA.DIST_CHANNEL_CODE<> '20'  )
  15. AND
  16. (
  17.  MAP_SALES_AREA.SALES_ORG_CODE IN ('1158')
  18.    OR '%' IN ('1158')
  19. )
  20. AND
  21. (
  22.  MAP_DOCUMENT_TYPE.DOC_TYPE_CODE IN ('YFDI')
  23.    OR '%' IN ('YFDI')
  24. )
  25. AND  MAP_DOCUMENT_TYPE.DOC_TYPE_CODE  IN  ('YF02', 'YFAV', 'YFIC', 'YFMS', 'YFNT', 'YIV1', 'YFMA')
  26. GROUP BY
  27. MAP_SALES_AREA.SALES_ORG_CODE,
  28. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE


 
 
La requête qui marche

Code :
  1. SELECT
  2. MAP_SALES_AREA.SALES_ORG_CODE,
  3. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE,
  4. count( distinct TDS_INVOICE_LINE.INVOICE_NUMBER )
  5. FROM
  6. MAP_SALES_AREA,
  7. MAP_DOCUMENT_TYPE,
  8. TDS_INVOICE_LINE
  9. WHERE
  10. ( MAP_DOCUMENT_TYPE.END_DATE = '31/12/4712'  )
  11. AND  ( MAP_DOCUMENT_TYPE.BE_ID=TDS_INVOICE_LINE.DOC_CATEG_TYPE  )
  12. AND  ( MAP_SALES_AREA.BE_ID=TDS_INVOICE_LINE.SALES_AREA  )
  13. AND  ( MAP_SALES_AREA.END_DATE = '31/12/4712'  )
  14. AND  ( MAP_SALES_AREA.DIST_CHANNEL_CODE<> '20'  )
  15. AND
  16. (
  17.  MAP_SALES_AREA.SALES_ORG_CODE IN ('1158')
  18.  OR '%' IN ('1158')
  19. )
  20. AND  MAP_DOCUMENT_TYPE.DOC_TYPE_CODE  IN  ('YF02', 'YFAV', 'YFIC', 'YFMS', 'YFNT', 'YIV1', 'YFMA')
  21. AND
  22. (
  23.  MAP_DOCUMENT_TYPE.DOC_TYPE_CODE IN ('YFDI')
  24.  OR '%' IN ('YFDI')
  25. )
  26. GROUP BY
  27. MAP_SALES_AREA.SALES_ORG_CODE,
  28. MAP_DOCUMENT_TYPE.DOC_TYPE_CODE


   
Essaye comme çà directement dans ton SGBD (sans passer par BO) pour voir ce que çà donne.
 
C'est peut-être BO qui essaye d'optimiser la requête et qui se prend les pieds dans le tapis :D


Message édité par Mara's dad le 24-10-2003 à 12:58:39

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°549890
jey_skywak​er
Jedi SWU
Posté le 24-10-2003 à 17:41:55  profilanswer
 

OK Merci
effectivement BO rajoute pleins de parenthèses qui ne servent à rien :(


---------------
L'univers de Starwars est désormais à votre portée !
n°550184
MagicBuzz
Posté le 25-10-2003 à 09:16:04  profilanswer
 

Ouais mais un gregroupement de AND (avec des parenthèses quoi) ne change rien au résultat. Le AND c'est comme le + arithmétique. Parenthèses ou non, le résultat est toujours rigoureusement le même.

n°550186
jey_skywak​er
Jedi SWU
Posté le 25-10-2003 à 09:29:53  profilanswer
 

Bien sûr...n'empèche que la requête devient moins lisible avec des tonnes de parenthèses inutiles


---------------
L'univers de Starwars est désormais à votre portée !

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

  Problème dans une requête SQL

 

Sujets relatifs
Probleme avec une requete SQL: je ne sais pas comment faire...![SQL server] Problème de requête [--RESOLVED--]
[ASP] Problème de date dans requête SQLRequête SQL sur controle ADO - Problème
probleme d'affichage lors d'1 requete SQL[SQL]probleme avec une requete
Problème de requete SQL avec moteur JET MS-AccessProblème avec une requête SQL
Problème de somme dans requête SQLProbleme d'écriture de requete en SQL :
Plus de sujets relatifs à : Problème dans une requête SQL


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