{"id":8216,"date":"2019-05-15T02:10:05","date_gmt":"2019-05-15T00:10:05","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=8216"},"modified":"2019-05-15T02:20:02","modified_gmt":"2019-05-15T00:20:02","slug":"tests-conditionnels-dans-des-requetes-sql","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=8216","title":{"rendered":"Tests conditionnels dans des requ\u00eates SQL"},"content":{"rendered":"<p style=\"text-align: justify;\">Un test conditionnel permet de n\u2019ex\u00e9cuter une instruction ou un ensemble d\u2019instructions que si une ou plusieurs conditions sont remplies.<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?attachment_id=8219\" rel=\"attachment wp-att-8219\"><img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"478\" class=\"aligncenter size-full wp-image-8219\" alt=\"ACCESS R\u00e9sultat requ\u00eate\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-R\u00e9sultat-requ\u00eate.png\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-R\u00e9sultat-requ\u00eate.png 972w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-R\u00e9sultat-requ\u00eate-300x148.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-R\u00e9sultat-requ\u00eate-768x378.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-R\u00e9sultat-requ\u00eate-730x359.png 730w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Dans le cadre de requ\u00eates SQL, les tests conditionnels contribuent \u00e0 cr\u00e9er des champs de donn\u00e9es.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/Test-conditionnel.png\"><img loading=\"lazy\" decoding=\"async\" width=\"371\" height=\"284\" title=\"Test conditionnel\" class=\"aligncenter wp-image-1799\" alt=\"\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/Test-conditionnel.png\"><\/a><strong><em>Condition simple : SI condition r\u00e9alis\u00e9e ALORS action1 SINON action2&#8230;<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Les tests conditionnels sont une structure de programmation courante, facile \u00e0 programmer qui se traduit ainsi en SQL :<\/p>\n<p style=\"text-align: center;\"><em>iif(condition;action1;action2)<\/em><\/p>\n<p style=\"text-align: justify;\">Qui traduit en Fran\u00e7ais signifie : si (<em>iif<\/em>) condition r\u00e9alis\u00e9e alors (;) r\u00e9alise action 1 sinon (;) r\u00e9alise action 2.<\/p>\n<p style=\"text-align: justify;\"><em>Exemple :<\/em><\/p>\n<pre class=\"lang:plsql decode:true\">IIf(Left([FEC].[CompteNum],2)=45,\"X\",\"\")<\/pre>\n<p style=\"text-align: justify;\">Dans cet exemple, si (<em>iif<\/em>) les deux chiffres les plus \u00e0 gauche du champ num\u00e9ro de compte de la table FEC (<em>Left([FEC].[CompteNum],2)<\/em>) \u00e9galent <em>45<\/em> (compte courant d&#8217;associ\u00e9s) alors ins\u00e9rer <em>X<\/em> sinon ne rien faire.<\/p>\n<p style=\"text-align: justify;\">La fonction <em>LEFT(cha\u00eene,nbcar)<\/em> permet de retourner le nombre souhait\u00e9 (<em>nbcar<\/em>) de caract\u00e8res parmi les premiers caract\u00e8res d\u2019une cha\u00eene ou d&#8217;un champ de donn\u00e9es. La fonction <em>RIGHT<\/em> r\u00e9alise la m\u00eame action mais sur la droite de la cha\u00eene.<\/p>\n<p style=\"text-align: justify;\">Le test conditionnel repose sur une comparaison. C&#8217;est la r\u00e9alisation ou non de la condition qui conditionne l&#8217;action \u00e0 ex\u00e9cuter.<\/p>\n<p style=\"text-align: justify;\"><em>Expression de la comparaison :<\/em><\/p>\n<p style=\"text-align: justify;\">La condition utilise un ou des champs de donn\u00e9es (dans l&#8217;exemple pr\u00e9c\u00e9dent la variable <em>CompteNum<\/em>), des op\u00e9rateurs de comparaison (ici : =) et des nombres et du texte.<\/p>\n<p style=\"text-align: justify;\">Les <a href=\"https:\/\/www.auditsi.eu\/?p=6979\">op\u00e9rateurs de comparaison<\/a> utilis\u00e9s pour exprimer la condition sont pour une bonne part repris du monde des math\u00e9matiques :<\/p>\n<ul>\n<li>&lt; (inf\u00e9rieur \u00e0),<\/li>\n<li>&gt; (sup\u00e9rieur \u00e0),<\/li>\n<li>&lt;&gt; (diff\u00e9rent de),<\/li>\n<li>= (\u00e9gal \u00e0),<\/li>\n<li>&lt;= (inf\u00e9rieur ou \u00e9gal \u00e0),<\/li>\n<li>&gt;= (sup\u00e9rieur ou \u00e9gal \u00e0),<\/li>\n<li>NOT (non)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Il est&nbsp;\u00e9galement possible de r\u00e9aliser des&nbsp;calculs plus ou moins complexes m\u00ealant fonctions, <a href=\"https:\/\/www.auditsi.eu\/?p=6458\">op\u00e9rateurs arithm\u00e9tiques<\/a> (+, -, *, \/), <a href=\"https:\/\/www.auditsi.eu\/?p=6979\">op\u00e9rateurs de comparaison<\/a>&nbsp;(&lt;, &gt;, =) et <a href=\"https:\/\/www.auditsi.eu\/?p=6975\">op\u00e9rateurs bool\u00e9ens<\/a> (AND, OR)<\/p>\n<p style=\"text-align: justify;\">Par exemple, pour calculer une remise de fin d\u2019ann\u00e9e de 1 % pour chaque client r\u00e9alisant&nbsp;un chiffre d\u2019affaires d\u00e9passant 500 K\u20ac :<\/p>\n<p style=\"text-align: center;\"><span style=\"font-family: georgia,palatino,serif;\"><em>iif(CA&gt;500000,0.01,0)*CA AS RFA<\/em><\/span><\/p>\n<p>Autres exemples :<\/p>\n<ul>\n<li>pour \u00e9viter une division par z\u00e9ro, la formule <em><span style=\"font-family: Thread-00003a94-Id-00000030;\">iif([champ1]=0,0,[champ2]\/[champ1])<\/span><\/em> renvoie le r\u00e9sultat 0 (z\u00e9ro) quand le champ [champ1] est nul, dans le cas contraire la division de [champ2] par [champ1] est effectu\u00e9e.<\/li>\n<li>la fonction <em>IIF<\/em> est \u00e9galement utilis\u00e9e lorsqu\u2019un champ num\u00e9rique est vide. En effet, si ce champ est int\u00e9gr\u00e9 dans une formule de calcul, le calcul ne sera pas ex\u00e9cut\u00e9 puisque le contenu du champ n\u2019est pas num\u00e9rique. La formule <em><span style=\"font-family: Thread-00003a94-Id-00000030;\">iif([champ] is null,0,[champ])<\/span><\/em> remplace les champs vides par z\u00e9ro.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong><em>Expression de conditions multicrit\u00e8res :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Le pr\u00e9c\u00e9dent exemple ne comprenait qu\u2019un seul crit\u00e8re. La condition peut comprendre plusieurs crit\u00e8res. Chaque crit\u00e8re est li\u00e9 au pr\u00e9c\u00e9dent par un op\u00e9rateur AND (et), OR (ou).<\/p>\n<p style=\"text-align: justify;\"><em>Exemple :<\/em><\/p>\n<p style=\"text-align: justify;\"><em>iif((age&gt;=18) AND (age&lt;=30);action1;action2)<\/em> : Si l&#8217;\u00e2ge est compris entre 18 et 30 ans (bornes comprises) alors&#8230;<\/p>\n<p style=\"text-align: justify;\"><em>iif((age=30) OR (age=45);action1;action2)<\/em> : Si l&#8217;\u00e2ge est \u00e9gal \u00e0 18 ans ou \u00e0 45 alors&#8230;<\/p>\n<p style=\"text-align: justify;\">Attention aux conditions impossibles : par exemple, pour reprendre l&#8217;exemple pr\u00e9c\u00e9dent, la condition : (age=30) AND (age=45)&#8230; est irr\u00e9alisable puisqu&#8217;un champ de donn\u00e9es (ou un \u00eatre humain normalement constitu\u00e9 d&#8217;ailleurs) ne peut simultan\u00e9ment prendre les valeurs 30 et 45.<\/p>\n<p style=\"text-align: justify;\">Il est parfaitement possible d&#8217;imbriquer des conditions et de d\u00e9finir les priorit\u00e9s entre elles \u00e0 l&#8217;aide de parenth\u00e8ses. Dans ce cas, le <a href=\"https:\/\/www.auditsi.eu\/?p=6458\">r\u00e9gime des priorit\u00e9s<\/a> r\u00e9pond aux m\u00eames r\u00e8gles qu&#8217;en math\u00e9matiques. A noter, chaque parenth\u00e8se ouverte doit \u00eatre referm\u00e9e&#8230;<\/p>\n<p style=\"text-align: justify;\"><strong><em>Tests conditionnels imbriqu\u00e9s :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">La r\u00e9alit\u00e9 des choses (et quelquefois la perversit\u00e9 du programmeur, po\u00e8te \u00e0 sa mani\u00e8re) conduit le programmeur \u00e0 imbriquer des tests.<\/p>\n<p style=\"text-align: justify;\">Ces tests seront effectu\u00e9s jusqu&#8217;\u00e0 ce qu&#8217;une condition ne soit pas remplie ; dans ce cas le programme sort de la s\u00e9quence de tests et continue son ex\u00e9cution.<\/p>\n<p style=\"text-align: justify;\">La structure de programmation est la suivante :<\/p>\n<p style=\"text-align: center;\"><em>iif(condition;action1;iif(condition;action1;&#8230;))<\/em> : SI ALORS SINON SI ALORS SINON\u2026<\/p>\n<p style=\"text-align: justify;\">Le programmeur peut laisser libre cours \u00e0 son imagination&#8230; Par exemple :<\/p>\n<pre class=\"lang:plsql decode:true \">IIf(Left([FEC].[CompteNum],4)=4086,\"X\",IIf(Left([FEC].[CompteNum],4)=4099,\"X\",IIf(Left([FEC].[CompteNum],4)=4189,\"X\",IIf(Left([FEC].[CompteNum],4)=4199,\"X\",IIf(Left([FEC].[CompteNum],3)=267,\"X\",IIf(Left([FEC].[CompteNum],2)=17,\"X\",IIf(Left([FEC].[CompteNum],2)=45,\"X\",\"\"))))))) AS Tiers_IG<\/pre>\n<p><a href=\"https:\/\/www.auditsi.eu\/?attachment_id=8218\" rel=\"attachment wp-att-8218\"><img loading=\"lazy\" decoding=\"async\" width=\"1092\" height=\"156\" class=\"aligncenter size-full wp-image-8218\" alt=\"ACCESS Requ\u00eate SQL\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL.png\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL.png 1092w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL-300x43.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL-768x110.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL-1024x146.png 1024w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-SQL-730x104.png 730w\" sizes=\"auto, (max-width: 1092px) 100vw, 1092px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Dans le mode visuel du SGBDR ACCESS, les tests conditionnels sont r\u00e9alis\u00e9s avec la fonction <em>VraiFaux<\/em>. La syntaxe est semblable \u00e0 <em>iif<\/em> ; l&#8217;exemple SQL pr\u00e9c\u00e9dent se r\u00e9dige ainsi :<\/p>\n<pre class=\"lang:default decode:true \">Tiers_IG: VraiFaux(Gauche([FEC].[CompteNum];4)=4086;\"X\";VraiFaux(Gauche([FEC].[CompteNum];4)=4099;\"X\";VraiFaux(Gauche([FEC].[CompteNum];4)=4189;\"X\";VraiFaux(Gauche([FEC].[CompteNum];4)=4199;\"X\";VraiFaux(Gauche([FEC].[CompteNum];3)=267;\"X\";VraiFaux(Gauche([FEC].[CompteNum];2)=17;\"X\";VraiFaux(Gauche([FEC].[CompteNum];2)=45;\"X\";\"\")))))))<\/pre>\n<p style=\"text-align: justify;\">La r\u00e9daction est francis\u00e9e : <em>Gauche<\/em> correspond \u00e0 <em>Left<\/em>, <em>VraiFaux<\/em> \u00e0 <em>iif<\/em>&#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?attachment_id=8217\" rel=\"attachment wp-att-8217\"><img loading=\"lazy\" decoding=\"async\" width=\"1046\" height=\"400\" class=\"aligncenter size-full wp-image-8217\" alt=\"Requ\u00eate en mode visuel\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel.png\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel.png 1046w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel-300x115.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel-768x294.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel-1024x392.png 1024w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2019\/05\/ACCESS-Requ\u00eate-mode-visuel-730x279.png 730w\" sizes=\"auto, (max-width: 1046px) 100vw, 1046px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">___<\/p>\n<p>Approfondir le sujet : <a href=\"https:\/\/www.auditsi.eu\/?p=6899\">Interroger une base de donn\u00e9es avec une requ\u00eate SQL<\/a>&nbsp;\/ <a href=\"https:\/\/www.auditsi.eu\/?cat=1820\">Ma\u00eetriser le langage de requ\u00eate SQL<\/a>&nbsp;\/ <a href=\"https:\/\/www.auditsi.eu\/?cat=50\">Analyse de donn\u00e9es<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Tests%20conditionnels%20dans%20des%20requ%C3%AAtes%20SQL\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Un test conditionnel permet de n\u2019ex\u00e9cuter une instruction ou un ensemble d\u2019instructions que si une ou plusieurs conditions sont remplies. Dans le cadre de requ\u00eates SQL, les tests conditionnels contribuent \u00e0 cr\u00e9er des champs de donn\u00e9es. Condition simple : SI condition r\u00e9alis\u00e9e ALORS action1 SINON action2&#8230; Les tests conditionnels sont une structure de programmation courante, &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=8216\" class=\"more-link\">Continue reading &lsquo;Tests conditionnels dans des requ\u00eates SQL&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Tests%20conditionnels%20dans%20des%20requ%C3%AAtes%20SQL\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1820,282],"tags":[287,1387,285,251,1693,1821,1142,286,1698,57,1819,1643,222,2043],"class_list":["post-8216","post","type-post","status-publish","format-standard","hentry","category-requetes-sql","category-sql","tag-and","tag-gauche","tag-iif","tag-left","tag-operateurs-arithmetiques","tag-operateurs-booleens","tag-operateurs-de-comparaison","tag-or","tag-priorite","tag-requete-sql","tag-right","tag-sql","tag-tests-conditionnels","tag-vraifaux"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8216"}],"version-history":[{"count":4,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8216\/revisions"}],"predecessor-version":[{"id":8223,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8216\/revisions\/8223"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}