<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Les tutos de lolo</title>
	<atom:link href="https://blog.developpez.com/laurentvalente/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/laurentvalente</link>
	<description></description>
	<lastBuildDate>Fri, 01 Jun 2012 16:30:20 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[SharePoint 2010]Faire un workflow approbation sous SharePoint foundation 2010</title>
		<link>https://blog.developpez.com/laurentvalente/p11061/sharepoint-2010/sharepoint_2010_faire_un_workflow_approb_2010</link>
		<comments>https://blog.developpez.com/laurentvalente/p11061/sharepoint-2010/sharepoint_2010_faire_un_workflow_approb_2010#comments</comments>
		<pubDate>Fri, 01 Jun 2012 16:26:52 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;idée est la suivante : Nous sommes sous SharePoint 2010 Foundation donc en standard il n&#8217;existe que le workflow à 3 états. Le client ne veut pas de développement, mais il souhaite pouvoir faire un workflow d&#8217;approbation pour ses documents. On a une librairie ou une liste on ajoute les 2 champs suivants : Etat choix avec : En cours, Approuvé et Rejeté Attributs : champs texte multi ligne Un fait un workflow de liste [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;idée est la suivante : Nous sommes sous SharePoint 2010 Foundation donc en standard il n&rsquo;existe que le workflow à 3 états. Le client ne veut pas de développement, mais il souhaite pouvoir faire un workflow d&rsquo;approbation pour ses documents.</p>
<p><span id="more-9"></span></p>
<p>On a une librairie ou une liste on ajoute les 2 champs suivants :</p>
<p>Etat choix avec : En cours, Approuvé et Rejeté</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/1_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/1_thumb.png" width="344" height="622" /></a></p>
<p>Attributs : champs texte multi ligne</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/2_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/2_thumb.png" width="360" height="510" /></a></p>
<p>Un fait un workflow de liste sur cette librairie ou cette liste dans SharePoint designer :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/3_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/3_thumb.png" width="306" height="533" /></a></p>
<p>On ajoute une action de type Tâche : Collecter les données d&rsquo;un utilisateur</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/4_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="4" border="0" alt="4" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/4_thumb.png" width="354" height="525" /></a></p>
<p>On nomme la tâche : Données de validation</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/5_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="5" border="0" alt="5" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/5_thumb.png" width="560" height="419" /></a></p>
<p>On clique sur Next et on va ajouter deux champs :</p>
<p>- Le premier de type choix multiple qu&rsquo;on va nommer Statut Validation avec comme valeurs possibles Validé ou Rejeté, il n&rsquo;acceptera pas les blancs.</p>
<p>- Le deuxième Commentaires Validation sera un champ texte multi lignes, qui pourra être vide.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/6_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="6" border="0" alt="6" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/6_thumb.png" width="560" height="428" /></a></p>
<p>On va sélectionner l&rsquo;utilisateur ou le groupe en charge de cette tâche. Ici on prend administrator :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/7_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="7" border="0" alt="7" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/7_thumb.png" width="581" height="362" /></a></p>
<p>En sortie (Output) de la tâche, on crée une nouvelle variable qui va stocker le retour de l&rsquo;utilisateur en charge de cette tâche.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/8_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="8" border="0" alt="8" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/8_thumb.png" width="478" height="187" /></a></p>
<p>On ajoute une action de mise à jour d&rsquo;un champ de l&rsquo;item courant :</p>
<p>Dans cette action, on met à jour le champ Etat de la librairie de l&rsquo;item courant avec la valeur statuts Validation de la tâche:</p>
<p>Dans les taches on va chercher le statut validation retourné en string</p>
<p>Le champ ID de la variable de workflow au format ItemId</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/9_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="9" border="0" alt="9" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/9_thumb.png" width="636" height="254" /></a></p>
<p>On fait de même pour mettre à jour le champs Attribut à partir du champ commentaire Validation.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/10_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10" border="0" alt="10" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/10_thumb.png" width="644" height="260" /></a></p>
<p>Notre workflow doit ressembler à ce qui suit :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/11_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="11" border="0" alt="11" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/11_thumb.png" width="631" height="142" /></a></p>
<p>Maintenant on teste : </p>
<p>On ajoute un document à notre librairie :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/12_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12" border="0" alt="12" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/12_thumb.png" width="594" height="378" /></a></p>
<p>On lance notre workflow :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/13_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="13" border="0" alt="13" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/13_thumb.png" width="677" height="111" /></a></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/14_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="14" border="0" alt="14" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/14_thumb.png" width="211" height="72" /></a></p>
<p>Au lancement du workflow, celui-ci crée une Tâche dans la liste des tâches :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/15_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="15" border="0" alt="15" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/15_thumb.png" width="685" height="109" /></a></p>
<p>En faisant un modifier l&rsquo;élément (Edit Item) on a la fenêtre suivante :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/16_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="16" border="0" alt="16" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/16_thumb.png" width="578" height="473" /></a></p>
<p>Dans cette fenêtre on peut aller voir le fichier docx (on aurait pu aller le voir directement depuis la liste des tâches), on peut changer le statut de validation (qui deviendra l&rsquo;état) et ajouter un commentaire de validation.</p>
<p>3 options ensuite :</p>
<p>- On enregistre la sélection sans compléter la tâche du coup le statut de validation ne sera pas pris en compte</p>
<p>- On finit la tâche et donc on passe à l&rsquo;étape suivante du Workflow</p>
<p>- On annule</p>
<p>Ici on va faire un Save Draft :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/17_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="17" border="0" alt="17" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/17_thumb.png" width="666" height="145" /></a></p>
<p>La tâche n&rsquo;a pas changée dans la liste néanmoins si on l&rsquo;ouvre on retrouve nos données.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/18_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="18" border="0" alt="18" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/18_thumb.png" width="679" height="100" /></a></p>
<p>Le document est toujours dans l&rsquo;état « En cours ».</p>
<p>Maintenant on fait un complete Task sur la tâche :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/19_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="19" border="0" alt="19" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/19_thumb.png" width="694" height="162" /></a></p>
<p>Le « status » de la tâche est completed.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/20_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="20" border="0" alt="20" src="http://blog.developpez.com/media/413/Windows-Live-Writer/caf7bbbb0c7a_F3A9/20_thumb.png" width="712" height="78" /></a></p>
<p>Notre document est dans un Etat Validé avec un attribut « document validé » (pas jolie mais fonctionnel il suffit de l&rsquo;éditer pour enlever les tags).</p>
<p>Il est tout à fait possible de modifier le worflow pour qu&rsquo;il démarre à l&rsquo;ajout d&rsquo;un document dans la librairie.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Server]Saga transact-SQL Episode 6 : Les sous requêtes</title>
		<link>https://blog.developpez.com/laurentvalente/p10979/sql-serveur/sql_server_saga_transact_sql_episode_6_l</link>
		<comments>https://blog.developpez.com/laurentvalente/p10979/sql-serveur/sql_server_saga_transact_sql_episode_6_l#comments</comments>
		<pubDate>Mon, 23 Apr 2012 20:21:30 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[  Une sous-requête est une instruction select imbriquée dans une instruction select, insert, update ou delete, ou à l&#8217;intérieur d&#8217;une autre sous requête. Vous pouvez réécrire les sous requêtes sous forme de jointures et les utiliser à la place d&#8217;une expression. Une expression est une combinaison d&#8217;identificateurs, de valeurs et d&#8217;opérateurs que sql évalue pour obtenir un résultat. Les sous-requêtes vous permettent de décomposer une requête complexe en une série d&#8217;étapes logiques et, par conséquent, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p> </p>
<p>Une sous-requête est une instruction select imbriquée dans une instruction select, insert, update ou delete, ou à l&rsquo;intérieur d&rsquo;une autre sous requête. Vous pouvez réécrire les sous requêtes sous forme de jointures et les utiliser à la place d&rsquo;une expression.</p>
<p>Une expression est une combinaison d&rsquo;identificateurs, de valeurs et d&rsquo;opérateurs que sql évalue pour obtenir un résultat.</p>
<p>Les sous-requêtes vous permettent de décomposer une requête complexe en une série d&rsquo;étapes logiques et, par conséquent, de résoudre un problème à l&rsquo;aide d&rsquo;une seule d&rsquo;instruction. Les sous-requêtes sont utiles lorsque votre requête repose sur les résultats d&rsquo;une autre requête.</p>
<p><span id="more-15"></span></p>
<p>Une requête qui contient des sous requêtes peut souvent être écrite comme une jointure, si c&rsquo;est le cas préférez la jointure pour des raisons d&rsquo;optimisation.</p>
<p>Lorsque vous décidez d&rsquo;utiliser des sous requêtes tenez compte des points ci-dessous :</p>
<p>- Vous devez mettre les sous-requêtes entre parenthèses.</p>
<p>- Vous pouvez mettre une sous-requête à la place d&rsquo;une expression lorsqu&rsquo;une valeur unique ou une liste de valeur est renvoyée. Vous pouvez utiliser une sous requete renvoyant un ensemble d&rsquo;enregistrements avec plusieurs colonnes au lieu d&rsquo;une table ou exécuter la même fonction en tant que jointure.</p>
<p>- Vous ne pouvez pas utiliser des sous requêtes pour extraire des colonnes qui contiennent des données de type text ou image.</p>
<p>- Vous pouvez avoir des imbrications de requêtes (jusqu&rsquo;à 32 niveau) mais ce sera au dépend des performances.</p>
<p>Utilisation de sous requêtes en tant que table dérivée</p>
<p>La sous requête constitue un ensemble d&rsquo;enregistrements d&rsquo;une requête qui fonctionne comme une table, donc elle remplace une table dans la clause from. Elle sera optimisée en même temps que le reste de la requête.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012a_4.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012a" border="0" alt="23042012a" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012a_thumb_1.jpg" width="679" height="474" /></a></p>
<p><b>Utilisation de sous requête en tant qu&rsquo;expression</b></p>
<p>La sous requête doit faire référence à une valeur scalaire ou à une liste de valeurs contenue dans une colonne.</p>
<p>Attention cette expression ne sera calculées qu&rsquo;une seul fois au cours de l&rsquo;instruction.</p>
<p>Exemple : ici on a le nom du produit, son prix, la moyenne des prix des produits et la différence entre le prix du produit et le prix moyen.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012b_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012b" border="0" alt="23042012b" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012b_thumb.jpg" width="717" height="491" /></a></p>
<p><b>Utilisation de sous-requêtes pour corréler les données</b></p>
<p>Vous pouvez utiliser une sous requête corrélée en tant qu&rsquo;expression dynamique qui est modifiée pour chaque ligne d&rsquo;une requête externe. Le processeur de requête exécute la sous requête pour chaque ligne de la requête externe, ligne par ligne. Celle-ci est à son tour évaluée en tant qu&rsquo;expression pour chaque ligne, et son résultat est envoyé dans la requête externe.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012c_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012c" border="0" alt="23042012c" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012c_thumb.jpg" width="693" height="383" /></a></p>
<p>Ici on a demandé à avoir l&rsquo;id de commande et l&rsquo;id des clients qui ont commandé le produit 770 et dont la quantité de commande est inférieure à 20.</p>
<p>Un autre exemple : la liste des produits et la quantité maximum commandée par produit.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012d_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012d" border="0" alt="23042012d" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012d_thumb.jpg" width="542" height="551" /></a></p>
<p><b>Simulation d&rsquo;une clause join</b></p>
<p>Les sous requêtes permettent de générer les mêmes résultats qu&rsquo;avec une clause join néanmoins c&rsquo;est beaucoup moins performant.</p>
<p>On veut la liste des produits et leurs quantités commandées pour tous les produits qui sont couleur argent.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012e_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012e" border="0" alt="23042012e" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012e_thumb.jpg" width="631" height="676" /></a></p>
<p><b>Simulation d&rsquo;une clause Having</b></p>
<p>Utilisation d&rsquo;une sous requête pour générer les mêmes résultats qu&rsquo;une requête utilisant la clause Having (en moins performant !!!).</p>
<p>Exemple on recherche tous les produits dont le prix dépasse le prix moyen de ce même produit.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012f_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012f" border="0" alt="23042012f" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012f_thumb.jpg" width="712" height="435" /></a></p>
<p><b>Utilisations des clauses EXISTS et NOT EXISTS</b></p>
<p>On peut utiliser les opérateurs Exists et not exists pour savoir si des données existent dans une liste de valeurs.</p>
<p>Exemple : on veut tous les produits (id et nom) qui ont été commandé après le « 01/07/2004 ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012g_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="23042012g" border="0" alt="23042012g" src="http://blog.developpez.com/media/413/Windows-Live-Writer/7ab542fb2a8a_12B88/23042012g_thumb.jpg" width="687" height="488" /></a></p>
<p><b>Conseils pratiques</b></p>
<p>Utilisez les sous requêtes pour décomposer une requête complexe (peut-être qu&rsquo;il y aura possibilité de faire une ou plusieurs vues</p>
<p>Utilisez des alias de nom de table pour les sous requêtes corrélées.</p>
<p>Utilisez l&rsquo;instruction Insert&#8230; select pour ajouter des lignes d&rsquo;autres sources dans une table existante (insert into Matable select &#8230;).</p>
<p>Utilisez l&rsquo;opérateur exists plutôt que l&rsquo;opérateur in.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Server]Saga transact-SQL Episode 5 : Les jointures de tables</title>
		<link>https://blog.developpez.com/laurentvalente/p10940/sql-serveur/sql_server_saga_transact_sql_episode_5_l</link>
		<comments>https://blog.developpez.com/laurentvalente/p10940/sql-serveur/sql_server_saga_transact_sql_episode_5_l#comments</comments>
		<pubDate>Thu, 12 Apr 2012 19:51:54 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[  Il n&#8217;est pas rare de devoir requêter sur plusieurs tables pour avoir un ensemble de résultat cohérent. Pour faire ça il faut utiliser les relations clé primaire clé étrangère entre les tables, c&#8217;est ce que nous allons voir ici. L&#8217;utilisation d&#8217;alias pour les tables L&#8217;utilisation d&#8217;alias pour remplacer les noms de tables permet une lecture plus facile de la requête, malgré des jointures complexes. On peut remplacer un nom long et complexe par un [&#8230;]]]></description>
				<content:encoded><![CDATA[<p> </p>
<p>Il n&rsquo;est pas rare de devoir requêter sur plusieurs tables pour avoir un ensemble de résultat cohérent. Pour faire ça il faut utiliser les relations clé primaire clé étrangère entre les tables, c&rsquo;est ce que nous allons voir ici.</p>
<p><span id="more-14"></span></p>
<p><b>L&rsquo;utilisation d&rsquo;alias pour les tables</b></p>
<p>L&rsquo;utilisation d&rsquo;alias pour remplacer les noms de tables permet une lecture plus facile de la requête, malgré des jointures complexes.</p>
<p>On peut remplacer un nom long et complexe par un alias simple.</p>
<p>Exemple:</p>
<p>SELECT * FROM server.database.schema.table AS table_alias</p>
<p>Donc si on a des noms de tables à rallonge ou difficile à écrire cette façon de faire est utile.</p>
<p>Prenons l&rsquo;exemple de tables liées par une relation, on a la table « produits » et la table « inventaire », ces 2 tables sont liés par le champ « productid » qui devient donc l&rsquo;objet de la jointure. Dans l&rsquo;exemple suivant on veut avoir le nom du produit et sa quantité en stock donc on fait la jointure sur « productid » on donne l&rsquo;alias « nom_produit » à la table « Production.product » et l&rsquo;alias « moninventaire » à la table « production.Productinventory ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012a_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012a" border="0" alt="12042012a" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012a_thumb.jpg" width="586" height="375" /></a></p>
<p><b>Jointure sur une table elle-même</b></p>
<p>Une possibilité extrêmement utile est de joindre 2 fois la même table pour pouvoir parcourir la table en cherchant des valeurs déterminées.</p>
<p>Par exemple, on a la table employés qui contient la colonne « employeeid » et la colonne « managerid » qui reprend en fait l&rsquo;id employé du manager. Si on veut savoir qui est le chef de qui dans une seule requête simple on écrit ce qui suit (la clause « where » a été rajoutée pour avoir un ensemble de résultat simple mais sans le « where » on a la hiérarchie sur toute la table).</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012b_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012b" border="0" alt="12042012b" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012b_thumb.jpg" width="589" height="294" /></a></p>
<p>Ici le 12 est le chef de 3, 109 est le chef de 12 et 109 n&rsquo;a pas de chef donc c&rsquo;est le boss.</p>
<p>Ici la jointure est interne ce qui est le cas par défaut donc vous pouvez abréger « inner Join » par « Join ».</p>
<p><b>Les jointures Internes</b></p>
<p>Les jointures internes combinent des tables en comparant des colonnes qui sont communes aux deux tables. Sql Server renvoie uniquement les lignes qui répondent aux conditions de jointures.</p>
<p>Attention il est souvent nécessaire de préciser dans la clause « select » « le nom de la table. Le nom de la colonne » car si la colonne est présente dans les deux tables qui composent la jointure SQL ne saura pas où piocher la valeur.</p>
<p>N&rsquo;utiliser pas de valeur NULL comme condition de jointure, car les valeurs de ce type ne sont pas considérées comme égales entre elles.</p>
<p>Exemple on a 2 tables qui sont liées par une relation (clé primaire, clé étrangère) on veut faire une requête qui nous renvoi certains champs de la table 1 et certains champs de la tablmes2 qui sont relatifs aux champs de la tables 1. On va donc faire une requête en mettant les champs qui nous intéressent dans la clause « select » puis faire la jointure interne entre les deux tables grâce à la relation qui existe.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012d_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012d" border="0" alt="12042012d" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012d_thumb.jpg" width="575" height="368" /></a></p>
<p>Ici on a encore utilisé les alias pour une lecture plus simple de la requête.</p>
<p>La relation entre les deux tables porte ici sur la colonne « EmployeeID ».</p>
<p>Si maintenant on veut ajouter une clause WHERE on la mettra après la jointure.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012e_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012e" border="0" alt="12042012e" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012e_thumb.jpg" width="579" height="471" /></a></p>
<p><b>Les jointures externes</b></p>
<p>Les jointures externes gauches ou droites combinent les lignes provenant de deux tables qui remplissent la condition de jointure, ainsi que celle de la table de droite ou de gauche qui ne remplissent pas cette condition, conformément à ce que spécifie la clause Join. Les lignes qui ne remplissent pas la condition de la jointure affichent la valeur NULL dans l&rsquo;ensemble des résultats.</p>
<p>Pourquoi utiliser ce type de jointure ?</p>
<p>Pour obtenir la liste complète des données stockées dans l&rsquo;une des tables jointes en plus des informations remplissant les conditions de jointures.</p>
<p>Attention aux points suivants :</p>
<p>- SQL ne renvoie que les lignes uniques lorsque vous utilisez des jointures externes gauche ou droite.</p>
<p>- Utilisez une jointure externe gauche pour afficher toutes les lignes de la première table spécifiée (la table à gauche de l&rsquo;expression). Si vous inversez l&rsquo;ordre dans lequel les tables sont répertoriées dans la clause from, l&rsquo;instruction produit le même résultat qu&rsquo;une jointure externe droite. Inversement pour la jointure externe droite.</p>
<p>- Vous pouvez abréger les clauses « LEFT OUTER JOIN » et « RIGHT OUTER JOIN » en « LEFT JOIN » et « RIGHT JOIN ».</p>
<p>Exemple on a 2 tables liées par une relation, une table clients qui contient 4 clients et une table qui contient les réponses clients à des question seulement on ne sait pas si tout les clients ont répondus aux questions si on fait un inner join :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012f_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012f" border="0" alt="12042012f" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012f_thumb.jpg" width="570" height="309" /></a></p>
<p>On un client qui à répondu à 2 question et un autre client qui a répondu à une question. On veut avoir la liste complète des clients qu&rsquo;ils aient répondu ou pas.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012g_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012g" border="0" alt="12042012g" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012g_thumb.jpg" width="562" height="350" /></a></p>
<p>On choisit de mettre un left car la table que l&rsquo;on veut voir complètement est à gauche du join .</p>
<p>Ici on voit qu&rsquo;il y a un client (Dollon) qui a répondu qu&rsquo;à une question et 2 clients qui n&rsquo;ont pas répondu donc ils ont les champs à NULL.</p>
<p>Maintenant si je fais un right join sur la même requête j&rsquo;aurais le même résultat qu&rsquo;un inner join puisque la table t_clireponse ne possède que les réponses des clients.</p>
<p>Ce que je peux faire ici c&rsquo;est inverser les tables autour du join et mettre right à la place de left et j&rsquo;aurais le même résultat que le left.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012h_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012h" border="0" alt="12042012h" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012h_thumb.jpg" width="540" height="352" /></a></p>
<p><b>Les jointures croisées</b></p>
<p>Elles affichent toutes les combinaisons de l&rsquo;ensemble des lignes des tables jointes. Il n&rsquo;est pas obligatoire de disposer d&rsquo;une colonne commune pour utiliser des jointures croisées.</p>
<p>Elles sont rarement utilisées dans une base de données normalisée, on peut les utiliser pour générer des données de tests ou pour créer des listes de vérification.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012i_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012i" border="0" alt="12042012i" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012i_thumb.jpg" width="529" height="490" /></a></p>
<p>Select * from T1 cross join T2 </p>
<p>Pas de « ON t1.col1=T2.Col1 »</p>
<p><b>Jointures de plus de deux tables</b></p>
<p>Il est possible de joindre un nombre quelquonque de tables (limité à 256 tables par instruction select). Toute table spécifiée dans une opération de jointure peut être jointe à une autre table qui possède une colonne commune.</p>
<p>Ainsi on peut obtenir des informations associées provenant de plusieurs tables.</p>
<p>Pensez à utiliser une clause Where pour limiter le nombre de lignes renvoyées.</p>
<p>Exemple on va faire une requête pour laquelle on a besoin de champs qui sont dans 3 tables pour nous aider on a les 3 tables reliées par des relations donc dans le select on va spécifier les champs que l&rsquo;on veut voir apparaitre en les nommant « table.colonne » puis on va faire des jointure sur les relations .</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012j_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012j" border="0" alt="12042012j" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012j_thumb.jpg" width="537" height="255" /></a></p>
<p><b>Combinaison d&rsquo;ensemble de résultats (union)</b></p>
<p>On va utiliser l&rsquo;opérateur union pour créer un seul ensemble de résultat à partir de plusieurs requêtes.</p>
<p>On utilise Union lorsque les données qu&rsquo;on souhaite extraire proviennent de sources différentes et qu&rsquo;elles ne sont pas accessibles à l&rsquo;aide d&rsquo;une seule requête.</p>
<p>Attention les tables spécifiées doivent contenir des données de mêmes types ainsi que le même nombre et le même ordre de colonne dans la liste de sélection de chaque requête.</p>
<p>Sql supprime les lignes en double de l&rsquo;ensemble de résultats. Toutefois si, si on utilise l&rsquo;option ALL, toutes les lignes (doublons inclus) figurent dans l&rsquo;ensemble de résultats.</p>
<p>Exemple : On va faire une requête qui demande le nom et le numéro des personnes dont le nom commence par « AB » et une autre requête qui demande le nom d&rsquo;un produit et sa référence pour tout les produits dont le nom commence par un « B », les 2 requêtes demandent des champs qui sont de même types donc on va pouvoir faire une union pour rassembles les 2 requêtes dans le même ensemble de résultat.</p>
<p>Si on exécute les 2 requêtes sans union on a 2 ensembles de résultats</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012k_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012k" border="0" alt="12042012k" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012k_thumb.jpg" width="489" height="558" /></a></p>
<p>Si pour la même requête on ajoute une clause union entre les 2 on a ce qui suit :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012l_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="12042012l" border="0" alt="12042012l" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1a11bf297509_12439/12042012l_thumb.jpg" width="509" height="533" /></a></p>
<p>Soit un seul ensemble de résultat.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Server]Saga transact-SQL Episode 4 : Grouper et organiser les données</title>
		<link>https://blog.developpez.com/laurentvalente/p10938/sql-serveur/sql_server_saga_transact_sql_episode_4_g</link>
		<comments>https://blog.developpez.com/laurentvalente/p10938/sql-serveur/sql_server_saga_transact_sql_episode_4_g#comments</comments>
		<pubDate>Thu, 12 Apr 2012 08:30:02 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Parfois l&#8217;ensemble de résultat doit être présenté selon les souhaits du client et donc certaine mise en pages sont nécessaires. Lister les n premières valeurs Il s&#8217;agit de la clause TOP n dans la commande SELECT. On peut avoir ainsi les n premières lignes ou les n premier % des lignes. On a les 10 premières lignes de la table en fonction de leur ProductID et de leur Nom de façon croissante sur les 2 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><b></b></p>
<p>Parfois l&rsquo;ensemble de résultat doit être présenté selon les souhaits du client et donc certaine mise en pages sont nécessaires. </p>
<p><span id="more-13"></span></p>
<p><b>Lister les n premières valeurs</b></p>
<p>Il s&rsquo;agit de la clause TOP n dans la commande SELECT. On peut avoir ainsi les n premières lignes ou les n premier % des lignes. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012a_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012a" border="0" alt="10042012a" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012a_thumb.jpg" width="519" height="561" /></a>    <br />On a les 10 premières lignes de la table en fonction de leur ProductID et de leur Nom de façon croissante sur les 2 colonne globalement, c&rsquo;est pour ça qu&rsquo;il est recommandé d&rsquo;associer une clause ORDER BY aux commandes SELECT comprenant une clause TOP. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012b_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012b" border="0" alt="10042012b" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012b_thumb.jpg" width="524" height="593" /></a>    <br />On a les 10 premières lignes correspondant aux 10 premiers ProductId de la table. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012c_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012c" border="0" alt="10042012c" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012c_thumb.jpg" width="530" height="611" /></a>    <br />Ici on a utilisé la clause PERCENT donc on a les 10 premiers pourcent de la table soit non plus 10 lignes mais 55 lignes ordonnées par ProductID.     <br />La clause WITH TIES est particulière :     <br />- Elle se place après le TOP n     <br />- Elle est fortement liée à la clause ORDER BY     <br />- Elle permet d&rsquo;ajouter, à l&rsquo;ensemble de résultat, les lignes qui correspondent à la dernière ligne du TOP et dont la valeur de la colonne signalée dans la clause ORDER BY correspond.     <br />Je crois qu&rsquo;il vaut mieux un exemple : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012d_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012d" border="0" alt="10042012d" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012d_thumb.jpg" width="529" height="529" /></a>    <br />On fait un top simple qui nous ramène 10 lignes.     <br />On prend exactement la même requête et on ajoute la clause WITH TIES. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012e_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012e" border="0" alt="10042012e" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012e_thumb.jpg" width="528" height="594" /></a>    <br />On a 94 lignes soit toutes les lignes de la table qui ont la valeur « color=&rsquo;Black&rsquo; ». (J&rsquo;espère que c&rsquo;est plus clair sinon essayez le !! ça peut être utile.). </p>
<p><b>Les fonctions d&rsquo;agrégation</b></p>
<p>Ce sont des fonctions SQL server intégrées que vous pouvez utiliser dans la clause SELECT ou en combinaison dans la clause GROUP BY.    <br />A l&rsquo;exception de la fonction COUNT(*) toutes les fonctions renvoient NULL si aucune ligne ne répond aux conditions.     <br />Voici les fonctions d&rsquo;agrégations les plus communes     <br />AVG: Calcule la moyenne d&rsquo;une colonne     <br />COUNT: Calcule le nombre de lignes correspondant aux critères de la requête     <br />MAX: Calcule la valeur maximale d&rsquo;une colonne     <br />MIN: Calcule la valeur minimale d&rsquo;une colonne     <br />SUM: Effectue la somme des valeurs d&rsquo;une colonne     <br />Il y a certain spécificité pour ces fonctions:     <br />- COUNT est la seule fonction d&rsquo;agrégation avec laquelle on peut utiliser des types de colonne text, ntext, ou image.     <br />- MIN et MAX vous ne pouvez pas utiliser ces clauses avec des types bit.     <br />- SUM et AVG vous pouvez les utiliser seulement avec des colonnes de type int, smallint, tinyint, decimal, numeric, float,real, money, et smallmoney. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012f_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012f" border="0" alt="10042012f" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012f_thumb.jpg" width="536" height="319" /></a>    <br />Prix moyen des produits. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012g_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012g" border="0" alt="10042012g" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012g_thumb.jpg" width="535" height="349" /></a>    <br />Prix total des produits. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012h_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012h" border="0" alt="10042012h" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012h_thumb.jpg" width="546" height="228" /></a>    <br />Prix minimum et prix maximum. </p>
<p><b>Utiliser des fonctions d&rsquo;agrégation avec des valeurs NULL </b></p>
<p>Les valeurs NULL peuvent fausser l&rsquo;ensemble de résultats par exemple si on utilise la fonction COUNT dans une instruction SELECT sur une table qui compte 10 ligne et que la colonne que l&rsquo;on compte contient 2 valeurs NULL, la requête retourne 8 comme résultat. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012i_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012i" border="0" alt="10042012i" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012i_thumb.jpg" width="547" height="246" /></a>    <br />Ici nous avons une table qui contient 4 lignes avec des colonnes nom et prénom, mais un des prénom est NULL donc on a 4 noms et 3 prénoms. </p>
<p><b>Les fondamentaux du GROUP BY </b></p>
<p>Utilisez la clause GROUP BY sur des colonnes ou des expressions pour organiser les lignes et pour résumer ces groupes. Par exemple, utilisez la clause GROUP BY pour déterminer la quantité de chaque produit qui a été commandé pour chaque commande.    <br />Lorsque vous utilisez la clause GROUP BY, examinez les directives suivantes: </p>
<p>- Toutes les colonnes qui sont spécifiées dans la clause GROUP BY doivent être incluses dans la commande SELECT.    <br />- Si vous incluez une clause WHERE, SQL Server groupes uniquement les lignes qui satisferont la clause WHERE.     <br />- Ne pas utiliser la clause GROUP BY sur des colonnes qui contiennent plusieurs null parce que les valeurs NULL sont traitées comme un groupe.     <br />- Utilisez le mot-clé ALL avec la clause GROUP BY pour afficher toutes les lignes avec les valeurs NULL dans l&rsquo;ensemble des colonnes, indépendamment de savoir si les lignes de satisferont la clause WHERE. </p>
<p>Exemple :    <br />On a la table qui contient entre autre les données suivantes </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012j_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012j" border="0" alt="10042012j" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012j_thumb.jpg" width="537" height="504" /></a>    <br />Maintenant si on utilise la clause GROUP BY pour avoir la quantité en stock de chaque produit. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012k_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012k" border="0" alt="10042012k" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012k_thumb.jpg" width="538" height="282" /></a></p>
<p><b>Group BY et HAVING</b></p>
<p>Utilisez la clause HAVING sur des colonnes ou des expressions pour définir les conditions sur le groupe inclus dans un ensemble de résultats. La clause HAVING définit les conditions sur la clause GROUP BY, au même titre que la clause WHERE interagit avec la commande SELECT. </p>
<p>Lorsque vous utilisez la clause HAVING, examiner les directives suivantes:    <br />- Utilisez la clause HAVING uniquement avec la clause GROUP BY pour restreindre le groupement. Utilisation de la clause HAVING sans la clause GROUP BY est n&rsquo;a pas de sens.     <br />- Vous pouvez référencer l&rsquo;une des colonnes qui apparait dans le SELECT. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012l_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012l" border="0" alt="10042012l" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012l_thumb.jpg" width="513" height="505" /></a></p>
<p>Ici nous avons les produits dont la quantité en stock est comprise entre 1090 et 1300. </p>
<p><b>Génération de valeurs globales Dans Ensembles de résultats </b></p>
<p>Utiliser la clause GROUP BY avec l&rsquo;opérateur CUBE et ROLLUP pour générer des valeurs globales dans les ensembles de résultats. Les opérateurs CUBE ou ROLLUP peuvent être utile pour les références croisées (cross-referencing) dans une table sans avoir à écrire    <br />d&rsquo;autres scripts.     <br />Lorsque vous utilisez les opérateurs ROLLUP ou CUBE, utilisez la fonction GROUPING pour identifier le détail et la synthèse des valeurs dans les résultats.     <br />Utilisez l&rsquo;opérateur ROLLUP avec la clause GROUP BY pour résumer les valeurs groupées.     <br />Exemple : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012m_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012m" border="0" alt="10042012m" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012m_thumb.jpg" width="549" height="504" /></a>    <br />Ici on a le nombre d&rsquo;article commandé par commande pour les produits 897 et 898.     <br />Donc on a 4 fois le produit 897 et 15 fois le produit 898 soit 19 articles en tout. Ce que l&rsquo;on voudrait c&rsquo;est ne pas calculer ça à la main WITH ROLLUP est là pour ça !! </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012n_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012n" border="0" alt="10042012n" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012n_thumb.jpg" width="537" height="588" /></a>    <br />On a juste ajouté la clause WITH ROLLUP entre le GROUP BY et le ORDER BY et ici la première ligne de l&rsquo;ensemble de résultat est la somme totale, la deuxième (surlignée) est la somme des articles 897 ensuite le détail comme précédemment puis la somme des articles 898 et le détail.     <br />La commande CUBE quant à elle permet de résumer les données comme le ROLLUP le fait mais ici on aura toutes les combinaisons possibles.     <br />Un exemple avec la même requête que précédemment : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012o_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012o" border="0" alt="10042012o" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012o_thumb.jpg" width="537" height="751" /></a>    <br />Ligne 1 : total des produits     <br />Ligne 2 à 10 : somme des produits commandés par commande     <br />Ligne 11 : somme des articles 897 commandés     <br />Ligne 12 et 13 détail de l&rsquo;article 897     <br />Ligne 14 : somme des articles 898 commandés     <br />Ligne 15 à la fin détail de l&rsquo;article 898     <br />Attention ici le problème de la lisibilité des résultats devient on problème car si on a n colonnes dans le GROUP BY, SQL retournera 2n combinaisons dans l&rsquo;ensemble de résultat.     <br />Pour remédier au risque de lecture difficile la fonction GROUPING est là pour distinguer les lignes résumées des lignes détails.     <br />Exemple : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012p_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012p" border="0" alt="10042012p" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012p_thumb.jpg" width="562" height="615" /></a></p>
<p>La colonne « résumé » met un flag à 1 sur les lignes résumées de « productid » et la colonne « resum » met un flag à 1 sur les colonnes résumées de « saleorderid ». Donc toutes les lignes avec un flag à 1 sont des lignes résumées et pas les autres. </p>
<p><b>Utilisation des clauses COMPUTE et COMPUTE BY </b></p>
<p>Les clauses COMPUTE et COMPUTE BY génèrent des lignes résumées supplémentaires dans un format non-relationnelles qui ne sont pas aux normes ANSI. Si c&rsquo;est utile pour la visualisation, la sortie n&rsquo;est pas bien adaptée pour la production d&rsquo;ensembles de résultats à utiliser avec d&rsquo;autres applications.    <br />On ne peut pas inclure de colonne text, ntext ou image dans ces clauses.     <br />Exemple : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012q_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012q" border="0" alt="10042012q" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012q_thumb.jpg" width="578" height="622" /></a>    <br />Ici on a 2 ensembles de résultats un pour le détail de la requête et un pour la somme de la quantité globale.     <br />Un exemple en ajoutant un COMPUTE BY : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012r_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="10042012r" border="0" alt="10042012r" src="http://blog.developpez.com/media/413/Windows-Live-Writer/96df9e2bd909_8348/10042012r_thumb.jpg" width="584" height="764" /></a>    <br />Ici on a un résumé par produit, le détail de chaque produit et le résumé total. </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL Server]Saga transact-SQL Episode 3 : Retrouver les données avec un SELECT</title>
		<link>https://blog.developpez.com/laurentvalente/p10928/sql-serveur/sql_server_saga_transact_sql_episode_3_r</link>
		<comments>https://blog.developpez.com/laurentvalente/p10928/sql-serveur/sql_server_saga_transact_sql_episode_3_r#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:18:37 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La commande qui permet de trouver des données est le SELECT sa syntaxe générique est la suivante : colonnes demandées c&#8217;est-à-dire les colonnes spécifiées dans le liste des colonnes et qui sont présentent dans la ou les tables spécifiées dans la clause FROM et les lignes de cette ou ces tables qui correspondent au filtre indiqué dans la clause WHERE. Pour spécifier des colonnes :   On peut renommer les colonnes en utilisant ce que [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><b></b></p>
<p>La commande qui permet de trouver des données est le SELECT sa syntaxe générique est la suivante :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aa_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="03042012aa" border="0" alt="03042012aa" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aa_thumb.png" width="646" height="175" /></a></p>
<p> colonnes demandées c&rsquo;est-à-dire les colonnes spécifiées dans le liste des colonnes et qui sont présentent dans la ou les tables spécifiées dans la clause FROM et les lignes de cette ou ces tables qui correspondent au filtre indiqué dans la clause WHERE. </p>
<p><span id="more-10"></span></p>
<p>Pour spécifier des colonnes :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012a_4.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012a" border="0" alt="03042012a" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012a_thumb_1.jpg" width="707" height="276" /></a></p>
<p> </p>
<p>On peut renommer les colonnes en utilisant ce que l&rsquo;on appelle un alias :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012b_4.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012b" border="0" alt="03042012b" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012b_thumb_1.jpg" width="719" height="216" /></a></p>
<p>Comme vous pouvez le voir le mot clé AS est optionnel.</p>
<p>Si on veut avoir toutes les colonnes de la tables il suffit de remplacer les noms de colonne par * mais à ce moment là bien sûr il n&rsquo;est plus possible de renommer les colonnes. Il faut aussi savoir qu&rsquo;en termes de performance le fait d&rsquo;énoncer chaque colonne est plus performant que d&rsquo;utiliser *.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012c_4.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012c" border="0" alt="03042012c" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012c_thumb_1.jpg" width="584" height="398" /></a></p>
<p><b>Utilisez la clause WHERE pour filtrer les lignes.</b></p>
<p>Voici les différentes possibilités pour filtrer</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aaa_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="03042012aaa" border="0" alt="03042012aaa" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aaa_thumb.png" width="604" height="314" /></a></p>
<p><b>Opérateur de comparaison</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012d_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012d" border="0" alt="03042012d" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012d_thumb_1.png" width="682" height="380" /></a></p>
<p><b>Comparateur de chaine</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012e_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012e" border="0" alt="03042012e" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012e_thumb.jpg" width="680" height="376" /></a></p>
<p>Filtre sur une chaine de caractère qui commence par « lau » (c&rsquo;est la lettre % qui dit « peut importe la suite »).</p>
<p><b>Expression </b><b>Returns </b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aaaa_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="03042012aaaa" border="0" alt="03042012aaaa" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012aaaa_thumb.png" width="759" height="249" /></a></p>
<p><b>Opérateurs logique: combinaison de condition</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012f_4.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012f" border="0" alt="03042012f" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012f_thumb_1.jpg" width="780" height="276" /></a></p>
<p>On utilisera l&rsquo;opérateur And pour retrouver les lignes qui correspondent à tous les critères et l&rsquo;opérateur OR pour celle qui correspondent au moins à un des critères.</p>
<p><b>Opérateur logique: négations</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012g_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012g" border="0" alt="03042012g" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012g_thumb.jpg" width="735" height="443" /></a></p>
<p>On utilise Not pour renvoyer les lignes qui ne correspondent pas à la condition qui suit.</p>
<p><b>Echelle de valeur</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012h_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012h" border="0" alt="03042012h" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012h_thumb.jpg" width="497" height="339" /></a></p>
<p>On a toutes les lignes dont l&rsquo;id est compris entre 1 et 3.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012i_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012i" border="0" alt="03042012i" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012i_thumb.jpg" width="621" height="320" /></a></p>
<p>On a toutes les lignes dont l&rsquo;id n&rsquo;est pas compris entre 1 et 2.</p>
<p><b>Liste de valeurs</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012j_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012j" border="0" alt="03042012j" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012j_thumb.png" width="625" height="358" /></a></p>
<p>On a toutes les lignes dont la colonne spécifiée possède une des valeurs entre parenthèse.</p>
<p><b>Valeurs inconnues</b></p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012k_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012k" border="0" alt="03042012k" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012k_thumb.png" width="642" height="368" /></a></p>
<p>Toutes les lignes où le prénom est NULL.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012l_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012l" border="0" alt="03042012l" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012l_thumb.jpg" width="606" height="418" /></a></p>
<p>Toutes les lignes où le prénom n&rsquo;est pas NULL.</p>
<p><b>Formater les résultats.</b></p>
<p><b>Ordonner les résultats</b></p>
<p>La clause ORDER BY permet d&rsquo;ordonner les résultats de façon croissante (ASC) ou décroissante (DESC).</p>
<p>Attention :</p>
<p>- SQL Server ne garantit pas un ordre dans le jeu de résultat, sauf si l&rsquo;ordre est spécifié avec une clause ORDER BY. </p>
<p>- SQL Server trie dans l&rsquo;ordre croissant par défaut. </p>
<p>- Les colonnes qui sont incluse dans la clause ORDER BY ne doivent pas apparaître obligatoirement dans la liste sélectionnée. </p>
<p>- Vous pouvez trier par nom de colonne, colonne de valeurs calculées, ou des expressions. </p>
<p>- Vous ne pouvez pas utiliser de colonnes texte, image ou nText dans la clause ORDER BY. </p>
<p>- Utiliser des index appropriés peut optimiser la clause ORDER BY. </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012m_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012m" border="0" alt="03042012m" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012m_thumb.jpg" width="599" height="625" /></a></p>
<p>Le même résultat aurait pus être obtenu avec la requête suivante : </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/aa_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="aa" border="0" alt="aa" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/aa_thumb.png" width="715" height="122" /></a></p>
<p><b>Eliminer les lignes dupliquées</b></p>
<p>Si vous voulez avoir une liste de valeurs unique, utilisez la clause DISTINCT pour éliminer les lignes dupliquées dans votre Ensemble de résultats.</p>
<p>Attention :</p>
<p>- La combinaison de valeur dans un ensemble de résultats peut déterminer des lignes distinctes donc les lignes qui contiennent une combinaison unique seront retournées dans l&rsquo;ensemble de résultat.</p>
<p>Exemple :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/aaa_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="aaa" border="0" alt="aaa" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/aaa_thumb.png" width="694" height="93" /></a></p>
<p>Sans la clause DISTINCT on a 504 lignes, Avec on a 286 lignes. </p>
<p><b>Changer les noms de colonnes ou utiliser des littéraux</b></p>
<p>On peut avoir un ensemble de résultat plus lisible lorsqu&rsquo;on utilise la possibilité de renommer des colonnes ou que l&rsquo;on insère une colonne non nommée dans laquelle on met un littéral.</p>
<p>Exemple :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012n_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="03042012n" border="0" alt="03042012n" src="http://blog.developpez.com/media/413/Windows-Live-Writer/fb193a0c7462_10BD8/03042012n_thumb.png" width="581" height="415" /></a></p>
<p>Ici &lsquo;Mon Nom : &lsquo; est un littéral qui permet de présenter chaque ligne. On a renommé les colonnes « Prenom » et « Employeur » permettant ainsi l&rsquo;utilisation d&rsquo;accent et de majuscule qui sont rarement utilisés pour des noms de colonnes dans une base.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Sql Server] Saga transact-SQL Episode 2 : Les éléments de syntaxe Transact SQL</title>
		<link>https://blog.developpez.com/laurentvalente/p10882/sql-serveur/sql_server_saga_transact_sql_episode_2_l</link>
		<comments>https://blog.developpez.com/laurentvalente/p10882/sql-serveur/sql_server_saga_transact_sql_episode_2_l#comments</comments>
		<pubDate>Tue, 27 Mar 2012 12:15:13 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les instructions DML (select, insert, update,delete)sont constituées de divers éléments de la syntaxe Transact-SQL, nous allons les détaillés. Directives de lot Une directive de lot indique à SQL server d’analyser et d’exécuter toutes les instructions qu’elle contient. Il existe 2 méthodes de base pour transmettre des lots à sql server : GO Sql interprète l’instruction GO comme signal pour envoyer les instructions transact sql actuelles à SQL server. Une commande GO délimite des lots d’instruction [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="line-height: normal; margin: 0cm 0cm 15pt; background: white; mso-outline-level: 2" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les instructions DML (select, insert, update,delete)sont constituées de divers éléments de la syntaxe Transact-SQL, nous allons les détaillés.</font></span></p>
<p><span id="more-12"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 2; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 18pt">Directives de lot</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Une directive de lot indique à SQL server d’analyser et d’exécuter toutes les instructions qu’elle contient. Il existe 2 méthodes de base pour transmettre des lots à sql server :</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">GO</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Sql interprète l’instruction GO comme signal pour envoyer les instructions transact sql actuelles à SQL server. Une commande GO délimite des lots d’instruction transact sql. La commande GO n’est pas une véritable instruction transact SQL.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Quand vous utilisez GO tenez compte de ce qui suit.</font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Le lot d’instruction en cours est formé de toutes les instructions entrées depuis la dernière commande GO ou depuis le début de la session</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Une instruction transact ne peut pas figurer sur la même ligne qu’une instruction GO bien que la ligne puisse contenir des commentaires.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">La portée des variables locales est limitée à un lot. De ce fait une référence à une telle variable ne peut être faite après une commande GO.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">EXEC</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Cette instruction est utilisée pour éxécuter une fonction définie par l’utilisateur, une procédure stockée et peut contrôler l’exécution d’une chaine de caractère dans un lot transact. Les paramètres peuvent être transmis sous forme d’arguments et un état de retour peut être attribué</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Commentaires</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les commentaires sont des chaines de textes non exécutables.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Pour une ligne on la fait précéder de 2 traits d’union exemple </font></span><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#008000">&#8211; commentaires</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Pour plusieurs lignes on encadre le texte de /* et */ exemple : </font></span><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#008000">/* commentaires */.</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Identificateurs</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">SQL server fournit une série de règles de dénomination standard pour les identificateurs d’objet :</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les Identificateur Standard peuvent contenir de 1 à 128 caractères, notamment des lettres et des symboles ( _ ,@ ou #). Et des nombres. Aucun espace n’est autorisé dans le nom des identificateurs standards. Les règles d’utilisation des identificateurs sont décrites ci-dessous.</font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Le premier caractère doit être une lettre comprise entre a et z ou A et Z.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les identificateurs commençant par un symbole ont un usage spécial.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt 72pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 9.5pt">o</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Un identificateur commençant par le symbole @ représente une variable locale ou un paramètre.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt 72pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 9.5pt">o</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Un identificateur commença nt par un # représente une table ou une procédure temporaire.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt 72pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 9.5pt">o</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Un identificateur commençant par un ## représente un objet temporaire global.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les noms d’objets temporaires locaux ne doivent pas dépasser 116 caractères y compris le #.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les identificateurs délimités permettent d’appeler des identificateurs qui ne respectent pas les règles précédemment définies.</font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="line-height: 11pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Exemple : </font></font></span><font face="Courier New"><span style="line-height: 12pt; font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">*</font></span> <span style="color: "><font color="#0000ff">from</font></span> [ 1 toto table] </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Variables</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les variables sont des éléments du langage auxquels sont affectés des valeurs. Une variable locale est définie par l’utilisateur dans une instruction DECLARE, se voit affecter une valeur initiale dans une instruction SET ou SELECT, puis est utilisée dans une instruction, le lot ou la procédure dans laquelle elle a été déclarée. Le nom d’une variable locale est précédée du caractère @, tandis que le nom d’une variable globale est précédé de @@.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Exemple : </font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">Declare</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @mavariable <span style="color: "><font color="#0000ff">varchar</font></span> <span style="color: "><font color="#808080">(</font></span>100</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">set</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @mavariable<span style="color: "><font color="#808080">=</font></span> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;AKE coucou&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">print</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @mavariable </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">*</font></span> <span style="color: "><font color="#0000ff">from</font></span> matable <span style="color: "><font color="#0000ff">where</font></span> moncommentraire<span style="color: "><font color="#808080">=</font></span>@mavariable</font></span></font><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Fonctions système</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Vous pouvez utiliser les expressions systèmes chaque fois qu’une expression est autorisée dans une instruction SELECT. Transact est doté de nombreuses fonctions qui renvoient des résultats, elles sont notées en rose dans l’éditeur de requête.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt">Exemple : </font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="line-height: 12pt; font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">Select</font></font></span><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#ff00ff">AVG</font></span> <span style="color: "><font color="#808080">(</font></span>prixunitaire<span style="color: "><font color="#808080">)</font></span> <span style="color: "><font color="#0000ff">as</font></span> avgprice <span style="color: "><font color="#0000ff">from</font></span> products </font></span></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt">GO </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#ff0000">&lsquo;ANSI : &lsquo;</font></span><span style="color: "><font color="#808080">,</font></span> <span style="color: "><font color="#ff00ff">convert</font></span><span style="color: "><font color="#808080">(</font></span><span style="color: "><font color="#0000ff">varchar</font></span><span style="color: "><font color="#808080">(</font></span>30<span style="color: "><font color="#808080">),</font></span><span style="color: "><font color="#ff00ff">GetDATE</font></span><span style="color: "><font color="#808080">(),</font></span>102</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">union </font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="line-height: 12pt; font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#ff0000">&lsquo;Européen : &lsquo;</font></span><span style="color: "><font color="#808080">,</font></span> <span style="color: "><font color="#ff00ff">convert</font></span><span style="color: "><font color="#808080">(</font></span><span style="color: "><font color="#0000ff">varchar</font></span><span style="color: "><font color="#808080">(</font></span>30<span style="color: "><font color="#808080">),</font></span><span style="color: "><font color="#ff00ff">GetDATE</font></span><span style="color: "><font color="#808080">(),</font></span>113</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt">GO </font></font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="line-height: 12pt; font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="line-height: 12pt; font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#ff00ff">user_name</font></span><span style="color: "><font color="#808080">(),</font></span> <span style="color: "><font color="#ff00ff">app_name</font></span></font><span style="color: "><font style="font-size: 10pt" color="#808080">() </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Opérateurs</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Les opérateurs sont des symboles qui effectuent des calculs mathématiques, des concaténations de chaînes et des comparaisons. Ils peuvent être combinés et utilisés dans des conditions de recherche.</font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les opérateurs arithmétiques effectuent des calculs sur des colonnes numériques ou sur des constantes. On multiplication(*), division (/), et modulo (%)(le reste de la division d’entiers) et les opérateurs additifs (addition (+) et soustraction (-).</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les opérateurs de comparaison comparent 2 expressions. Des comparaisons peuvent être effectuées entre des variables, colonne et expressions de même type.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">On a égal (=), supérieur(&gt;), inférieur(&lt;) , supérieur ou égal (&gt;=), inférieur ou égal(&lt;=) , différent (&lt;&gt;).</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les operateurs de concaténation de chaine(+) concatène des valeurs de chaîne. La chaîne vide n’est jamais évaluée comme une valeur NULL.</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les opérateurs Logiques And, OR, et NOT relient des conditions de recherche dans des clauses WHERE</font></font></span></p>
<p style="line-height: normal; text-indent: -18pt; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">-</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman"><font style="font-size: 7pt"> </font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Le niveau de priorité est le suivant : groupement () -&gt;multiplicatif */% -&gt;additif +- -&gt;concaténation de chaîne + -&gt;NOT -&gt; AND -&gt; OR. SQL SERVER traite en premier l’expression ayant le niveau d’imbrication le plus élevé. En outre, si tous les opérateurs arithmétiques d’une expression partagent le même niveau de priorité, l’ordre va de droite à gauche.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Expressions</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">L’exemple suivant calcule la quantité de produits dans une commande en multipliant le prix unitaire par la quantité commandée, puis filtre le résultat pour ne retourner que les lignes qui ont une valeur supérieure à 10 000</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">Select</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> orderId<span style="color: "><font color="#808080">,</font></span> ProductId<span style="color: "><font color="#808080">,</font></span> <span style="color: "><font color="#808080">(</font></span>Unitprice <span style="color: "><font color="#808080">*</font></span> Quantity<span style="color: "><font color="#808080">)</font></span> <span style="color: "><font color="#0000ff">as</font></span> montant <span style="color: "><font color="#0000ff">from</font></span> [order details] <span style="color: "><font color="#0000ff">where</font></span> <span style="color: "><font color="#808080">(</font></span>unitprice <span style="color: "><font color="#808080">*</font></span> quantity<span style="color: "><font color="#808080">)</font></span> <span style="color: "><font color="#808080">&gt;</font></span> 10000</font></span></font><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Eléments de langage de contrôle de flux</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">Transact prend en charge plusieurs éléments de langage qui contrôlent le flux de la logique dans les instructions. Il contient aussi l’instruction CASE qui vous permet d’utiliser une logique conditionnelle sur une seule ligne à la fois dans une instruction SELECT ou UPDATE.</font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 4; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma">Niveau Instruction :</font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Les éléments de langage suivants vous permettent de contrôler le flux de la logique d’un script :</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Blocs Begin… end -&gt; ces éléments délimitent une série d’instructions Transact pour les traiter sous forme d’une unité.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Blocs If…Else -&gt;Ces éléments indiquent que SQL server doit exécuter la première alternative si une certaine condition est vraie. Dans le cas contraire, SQl server doit exécuter la deuxième alternative.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Construction WHILE -&gt; Ces éléments exécutent une instruction de façon répétée tant que la condition spécifiée est vraie. Les instructions BREAK et CONTINUE contrôlent le fonctionnement des instructions dans une boucle WHILE.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Exemple :</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">if</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">EXISTS</font></span> <span style="color: "><font color="#808080">(</font></span><span style="color: "><font color="#0000ff">select</font></span> <span style="color: "><font color="#808080">*</font></span> <span style="color: "><font color="#0000ff">from</font></span> matable <span style="color: "><font color="#0000ff">where</font></span> monid<span style="color: "><font color="#808080">=</font></span>10</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">begin</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">print</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;il y a des lignes&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">End </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">else </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">begin </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">print</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;pas de ligne&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">end </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 4; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma">Niveau ligne</font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 9.5pt">Une expression CASE répertorie les prédicats, affecte une valeur à chacun d’eux, puis les teste. Si l’expression renvoie une valeur vraie, l’expression CASE la renvoie dans la clause WHEN. Si l’expression renvoie une valeur fausse et que vous avez spécifié une clause ELSE, SQL renvoie la valeur dans cette clause.</font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">declare</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @n </font><span style="color: "><font style="font-size: 10pt" color="#0000ff">tinyint </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">set</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @n<span style="color: "><font color="#808080">=</font></span>5 </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">if</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">(</font></span>@n <span style="color: "><font color="#808080">between</font></span> 4 <span style="color: "><font color="#808080">and</font></span> 6</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">Begin </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">While</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">(</font></span>@n<span style="color: "><font color="#808080">&gt;</font></span>0</font><span style="color: "><font style="font-size: 10pt" color="#808080">) </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">begin </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">select</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @n <span style="color: "><font color="#0000ff">as</font></span> <span style="color: "><font color="#ff0000">&lsquo;nombre&rsquo;</font></span></font><span style="color: "><font style="font-size: 10pt" color="#808080">, </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">case</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">when</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#808080">(</font></span>@n<span style="color: "><font color="#808080">%</font></span>2<span style="color: "><font color="#808080">)=</font></span>1 </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">then</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;Impair&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">else</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;PAIR&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">end</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> <span style="color: "><font color="#0000ff">as</font></span> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;Type&rsquo; </font></span></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">set</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> @n<span style="color: "><font color="#808080">=</font></span>@n <span style="color: "><font color="#808080">-</font></span> 1 </font></span></font></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">end </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">end </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 0pt; background: white" class="MsoNormal"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Courier New"><font style="font-size: 10pt" color="#0000ff">else </font></font></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><font face="Courier New"><span style="font-family: ; color: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font color="#0000ff"><font style="font-size: 10pt">print</font></font></span><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font style="font-size: 10pt"> </font><span style="color: "><font style="font-size: 10pt" color="#ff0000">&lsquo;analyse impossible&rsquo;</font></span></span></font><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"></span></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-outline-level: 3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><b><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Tahoma"><font style="font-size: 13.5pt">Mots clés réservés</font></font></span></b></p>
<p style="line-height: normal; margin: 0cm 0cm 10pt; background: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"><span style="font-family: ; mso-fareast-font-family: &#39;Times New Roman&#39;; mso-fareast-language: fr-ch"><font face="Times New Roman">SQL server réserve un certain nombre de mot clé à son usage personnel si néanmoins vous devez utiliser certain de ces mot pour un usage qui n’est pas celui définit il suffit de les délimiter par des crochets [].</font></span></p>
<p style="line-height: 13pt; margin: 0cm 0cm 10pt" class="MsoNormal"><font face="Calibri"><font style="font-size: 11pt">&#160;</font></font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL SERVER] Saga transact-SQL Episode 1 : Les types d’instructions transact SQL</title>
		<link>https://blog.developpez.com/laurentvalente/p10880/sql-serveur/sql_server_saga_transact_sql_episode_1_l</link>
		<comments>https://blog.developpez.com/laurentvalente/p10880/sql-serveur/sql_server_saga_transact_sql_episode_1_l#comments</comments>
		<pubDate>Mon, 26 Mar 2012 14:29:55 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[SQL Serveur]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les instructions DDL (Data Définition Language) : Elles permettent de gérer des objets dans la base de données. On peut créer (CREATE), modifier (ALTER) ou supprimer(DROP) des bases de données, des tables, des vues, des procédures stockées, des fonctions, des utilisateurs, des rôles ? Par défaut seul les membres des rôles sysadmin, db_creator, db_owner ou db_ddladmin sont autorisés à exécuter des instructions DDL. Exemple : le script ci-dessous crée une table client dans la base [&#8230;]]]></description>
				<content:encoded><![CDATA[<h1>Les instructions DDL (Data Définition Language) :</h1>
<p>Elles permettent de gérer des objets dans la base de données.</p>
<p>On peut créer (CREATE), modifier (ALTER) ou supprimer(DROP) des bases de données, des tables, des vues, des procédures stockées, des fonctions, des utilisateurs, des rôles ?</p>
<p>Par défaut seul les membres des rôles sysadmin, db_creator, db_owner ou db_ddladmin sont autorisés à exécuter des instructions DDL.</p>
<p>Exemple : le script ci-dessous crée une table client dans la base de données toto ; cette table contient les colonnes client_id, nom, prénom.</p>
<p>Use toto</p>
<p>Create table client(client_id int, nom varchar(50),prenom varchar (50))</p>
<p>GO</p>
<h1>Les instructions DCL (Data Control Language) :</h1>
<p>Elles permettent de déterminer qui sera autorisé à afficher ou modifier les données.</p>
<p>Grant : crée une entrée dans le système de sécurité qui permet à un utilisateur donné de travailler avec des données ou d?exécuter certaines instructions.</p>
<p>Deny : crée une entrée dans le système de sécurité qui refuse à un utilisateur, un groupe ou un rôle de travailler avec des données ou d?exécuter certaines instructions.</p>
<p>Revoke : Supprime une autorisation précédemment accordée ou refusée.</p>
<p>Exemple : on donne l?autorisation au rôle public d?interroger la table Client</p>
<p>Use toto</p>
<p>GRANT SELECT on Client TO Public</p>
<p>GO</p>
<h1>Les instructions DML (Data Manipulation Language) :</h1>
<p>Elles permettent d?interroger et de modifier les données.</p>
<p>Les instructions DML sont les suivantes : Select, Insert, Update, Delete.</p>
<p>Exemple : On extrait l?id client, le nom et le prénom de la table client.</p>
<p>Use toto</p>
<p>Select client_id, nom ,prenom from client</p>
<p>GO</p>
<p>Par la suite nous nous concentrerons sur les instructions DML.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SharePoint 2010]Comment changer la valeur d’un item d’une autre liste</title>
		<link>https://blog.developpez.com/laurentvalente/p10674/sharepoint-2010/sharepoint_2010_comment_changer_la_valeu</link>
		<comments>https://blog.developpez.com/laurentvalente/p10674/sharepoint-2010/sharepoint_2010_comment_changer_la_valeu#comments</comments>
		<pubDate>Tue, 24 Jan 2012 21:22:57 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[  L&#8217;idée est la suivante : - J&#8217;ai une liste de cours qui contient le nom du cours et le nombre de place disponible dans ce cours. - J&#8217;ai une liste participant qui contient le nom du participant et le nom du cours auquel il veut participer (champ lookup qui pointe sur le nom du cours de la liste cours, on associera le nombre de places disponibles pour une meilleure lisibilité). - Quand j&#8217;inscris un [&#8230;]]]></description>
				<content:encoded><![CDATA[<p> </p>
<p>L&rsquo;idée est la suivante :</p>
<p>- J&rsquo;ai une liste de cours qui contient le nom du cours et le nombre de place disponible dans ce cours. </p>
<p>- J&rsquo;ai une liste participant qui contient le nom du participant et le nom du cours auquel il veut participer (champ lookup qui pointe sur le nom du cours de la liste cours, on associera le nombre de places disponibles pour une meilleure lisibilité).</p>
<p>- Quand j&rsquo;inscris un participant à un cours je veux que le nombre de place disponibles dans ce cours diminue de 1.</p>
<p><span id="more-1"></span></p>
<p>Voilà mes deux listes :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb1_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb1" border="0" alt="nb1" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb1_thumb.png" width="864" height="312" /></a></p>
<p>On voit qu&rsquo;au départ on a</p>
<p>20 places pour l&rsquo;initiation Word</p>
<p>15 places pour le Word avancé</p>
<p>5 places pour l&rsquo;Excel</p>
<p>On va maintenant créer un workflow pour pouvoir gérer les inscriptions.</p>
<p>On ouvre SharePoint designer on va dans workflow puis on sélectionne workflow de liste :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb3_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb3" border="0" alt="nb3" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb3_thumb.png" width="306" height="387" /></a></p>
<p>On sélectionne la liste des participants parce que c&rsquo;est sur l&rsquo;ajout d&rsquo;un item dans cette liste que le Workflow sera lancé.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb4_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb4" border="0" alt="nb4" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb4_thumb.png" width="194" height="450" /></a></p>
<p>On renseigne le nom du workflow et sa description (optionnel).</p>
<p>Voilà comment se présente le workflow au départ :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb5_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb5" border="0" alt="nb5" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb5_thumb.png" width="563" height="304" /></a></p>
<p>Voici les étapes que nous allons mettre en place :</p>
<p>Comme on ne peut pas mettre une valeur directement dans le champ d&rsquo;une autre liste on va calculer la nouvelle valeur de ce champ puis lui affecter.</p>
<p>Etape 1 : Calculer la valeur du champ nombre de places disponibles</p>
<p>On fait Action puis faire un calcul</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb6_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb6" border="0" alt="nb6" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb6_thumb.png" width="552" height="267" /></a></p>
<p>Voici ce que ça affiche :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb7_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb7" border="0" alt="nb7" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb7_thumb.png" width="568" height="218" /></a></p>
<p>On clique sur le value le plus à gauche : Calculate Value. Puis sur le bouton fx</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb8_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb8" border="0" alt="nb8" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb8_thumb.png" width="567" height="386" /></a></p>
<p>Dans la boite de dialogue on va sélectionner le current item, pour rappel on est sur la liste des participants qui contient un champ Lookup sur le nom du cours de la liste cours et on a lié le champ nbre de places disponibles. </p>
<p>C&rsquo;est donc le champ lié nombre de places disponibles qui nous intéresse.</p>
<p>Par défaut, puisque ce champs est numérique le return field as nous propose double mais c&rsquo;est le champ lookup value qu&rsquo;il faut prendre (sinon ça marche pas !!).</p>
<p>Voici ce que ça donne :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb9_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb9" border="0" alt="nb9" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb9_thumb.png" width="567" height="145" /></a></p>
<p>Maintenant on veut faire ce champ moins 1 donc on change le plus en minus pour faire moins</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb10_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb10" border="0" alt="nb10" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb10_thumb.png" width="412" height="200" /></a></p>
<p>Pour la seconde value il suffit de mettre 1 comme suit</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb11_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb11" border="0" alt="nb11" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb11_thumb.png" width="515" height="89" /></a></p>
<p>Option :</p>
<p>A ce niveau si un avait le nombre de participant voulant s&rsquo;inscrire au cours on aurait fait fx puis la sélection suivante :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb12_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb12" border="0" alt="nb12" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb12_thumb.png" width="507" height="265" /></a></p>
<p>En supposant qu&rsquo;order contient le nombre de participants voulant s&rsquo;inscrire au cours</p>
<p>Fin de l&rsquo;option.</p>
<p>Donc on a l&rsquo;écran suivant :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb13_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb13" border="0" alt="nb13" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb13_thumb.png" width="593" height="92" /></a></p>
<p>La variable calc est automatiquement crée (on peut changer de nom si on veut mais peu d&rsquo;intérêt à ce niveau.</p>
<p>Maintenant on va affecter la variable calc au champ nbre de places disponible de la liste cours.</p>
<p>Donc on rajoute une action de type Update list item comme suit :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb14_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb14" border="0" alt="nb14" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb14_thumb.png" width="326" height="275" /></a></p>
<p>Donc on arrive au résultat suivant :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb15_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb15" border="0" alt="nb15" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb15_thumb.png" width="588" height="121" /></a></p>
<p>Il nous suffit de cliquer sur this list :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb16_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb16" border="0" alt="nb16" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb16_thumb.png" width="437" height="501" /></a></p>
<p>On choisit la liste Cours puis on clique sur le bouton Add pour sélectionner le champ sur lequel on va assigner une valeur ici c&rsquo;est Nbre de places disponibles. </p>
<p>On va cliquer sur fx pour aller chercher la valeur de la variable calc.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb17_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb17" border="0" alt="nb17" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb17_thumb.png" width="529" height="271" /></a></p>
<p>Ici la datasource est l&rsquo;ensemble des variables du workflow, le champ est la variable calc. On clique sur ok</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb18_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb18" border="0" alt="nb18" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb18_thumb.png" width="447" height="259" /></a></p>
<p>Encore ok</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb19_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb19" border="0" alt="nb19" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb19_thumb.png" width="417" height="428" /></a></p>
<p>Maintenant il faut préciser sur quel cours on doit affecter cette valeur donc cela se passe dans la partie Find the list item.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb20_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb20" border="0" alt="nb20" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb20_thumb.png" width="434" height="441" /></a></p>
<p>Dans la partie Field on choisit le champ nom du cours qui vient de la liste cours. Dans le champ value on clique sur fx et dans la popup qui s&rsquo;ouvre on va prendre dans le current item le champ nom du cours et comme précédemment on va retourner le champ en tant que lookup value.</p>
<p>Voici le résultat :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb21_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb21" border="0" alt="nb21" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb21_thumb.png" width="427" height="485" /></a></p>
<p>On fait ok. On a le message suivant :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb22_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb22" border="0" alt="nb22" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb22_thumb.png" width="422" height="436" /></a></p>
<p>Ceci n&rsquo;est pas grave on fait yes.</p>
<p>Notre workflow est prêt il faut maintenant déterminer quand est ce qu&rsquo;il se lancera, pour cela on clique sur Workflow settings.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb23_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb23" border="0" alt="nb23" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb23_thumb.png" width="335" height="153" /></a></p>
<p>La fenêtre paramètre de workflow s&rsquo;ouvre, on va juste paramétrer le lancement du workflow sur ajout de nouvel item dans la liste participant comme suit:</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb24_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb24" border="0" alt="nb24" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb24_thumb.png" width="433" height="438" /></a></p>
<p>Maintenant on publie notre workflow et on va le tester.</p>
<p>On revient sur notre liste participant et on fait Add item,</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb25_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb25" border="0" alt="nb25" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb25_thumb.png" width="631" height="302" /></a></p>
<p>Donc là le nombre de places disponibles dans le cours initiation Word doit passer de 20 à 19.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb26_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="nb26" border="0" alt="nb26" src="http://blog.developpez.com/media/413/Windows-Live-Writer/28009c059d72_137EC/nb26_thumb.png" width="669" height="262" /></a></p>
<p>Done <img src="https://blog.developpez.com/laurentvalente/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajout d&#8217;un content type à une liste</title>
		<link>https://blog.developpez.com/laurentvalente/p10479/sharepoint-2010/ajout_darsquo_un_content_type_a_une_list</link>
		<comments>https://blog.developpez.com/laurentvalente/p10479/sharepoint-2010/ajout_darsquo_un_content_type_a_une_list#comments</comments>
		<pubDate>Mon, 07 Nov 2011 14:34:35 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Nous avons vu comment créer un content type ici, nous allons maintenant voir comment l?intégrer à un liste SharePoint. 1) Créer une liste : On va dans site action, site settings 2) La page de gestion du site s?ouvre, on va dans la zone Site Administration puis don clique sur le lien « Site libraries and lists ». 3) Dans la page de gestion des librairies et des listes on clique sur « Create new [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Nous avons vu comment créer un content type <a href="http://blog.developpez.com/laurentvalente/p10478/sharepoint-2010/creation-de-content-type-avec-sharepoint/#more10478" target="_blank">ici</a>, nous allons maintenant voir comment l?intégrer à un liste SharePoint.</p>
<p><span id="more-6"></span></p>
<p>1) Créer une liste :</p>
<p>On va dans site action, site settings</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image001_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image001_thumb.png" width="278" height="539" /></a></p>
<p>2) La page de gestion du site s?ouvre, on va dans la zone Site Administration puis don clique sur le lien « Site libraries and lists ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image002_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image002_thumb.png" width="526" height="139" /></a></p>
<p>3) Dans la page de gestion des librairies et des listes on clique sur « Create new content »</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image003_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image003_thumb.png" width="524" height="404" /></a></p>
<p>4) La page d?ajout de fonctionnalités SharePoint s?ouvre, on va sélectionner le type List dans le menu de gauche puis le type de liste que l?on souhaite (ici custom list)</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image004_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image004_thumb.png" width="523" height="218" /></a></p>
<p>5) On doit lui donner un nom et on peut aller voir les options en cliquant sur more option avant de cliquer sur OK</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image006_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image006_thumb.jpg" width="534" height="165" /></a></p>
<p>Dans les options on peut ajouter un descriptif de notre liste et choisir si on veut la voir apparaitre dans le menu de gauche ou pas.</p>
<p>Si on clique sur Create, la liste se crée et s?affiche avec une seule colonne par défaut qui est « Title »</p>
<p>6) Si on veut ajouter un élément à notre liste voici l?affichage proposé.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image007_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image007_thumb.png" width="537" height="266" /></a></p>
<p>L?idée est d?associer notre content type créé ici pour retrouver nos colonnes.</p>
<p>Pour cela on va dans les paramètres de notre liste en cliquant sur « list settings » dans le ruban.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image009_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image009_thumb.jpg" width="539" height="113" /></a></p>
<p>7) Dans les paramètres de la liste nous allons ajouter la fonctionnalité de gestion des contents types.</p>
<p>Pour cela nous allons dans advanced settings :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image010_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image010_thumb.png" width="351" height="480" /></a></p>
<p>8) On clique sur Yes dans la zone « Allow management of content types ? ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image012_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image012_thumb.jpg" width="584" height="91" /></a></p>
<p>On clique sur ok. En revenant sur la fenêtre de gestion de la liste nous pouvons voir que la zone Content Types vient de s?ajouter.</p>
<p>9) On va donc ajouter notre content type en cliquant sur « Add from existing content type ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image013_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image013_thumb.png" width="354" height="584" /></a></p>
<p>10) Dans la fenêtre d?ajout de content type on cherche notre content dans la liste des content type disponibles et on l?ajoute à la liste des content types à ajouter.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image014_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image014_thumb.png" width="601" height="263" /></a></p>
<p>11) Nous allons fortement typer notre liste en mettant notre content type en tant que type d?élément par défaut pour notre liste.</p>
<p>Pour cela on clique sur « Change new button order and default content type ».</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image015_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image015_thumb.png" width="448" height="624" /></a></p>
<p>12) On va rendre le content type item invisible, et le mettre en position 2 puis mettre notre content type en position 1 et visible.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image016_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image016_thumb.png" width="652" height="150" /></a></p>
<p>L?affichage des propriétés de la liste au niveau des contents types a changé.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image017_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image017" border="0" alt="clip_image017" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image017_thumb.png" width="597" height="204" /></a></p>
<p>13) Si maintenant on va dans notre liste et qu?on clique sur « Add Item » voici l?affichage :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image018_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image018_thumb.png" width="581" height="444" /></a></p>
<p>On va remplir les champs</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image019_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image019" border="0" alt="clip_image019" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image019_thumb.png" width="589" height="411" /></a></p>
<p>On fait save :</p>
<p>14) On a juste la colonne title avec notre ligne. Si on clique sur l?item test on a la fiche complète.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image020_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image020" border="0" alt="clip_image020" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image020_thumb.png" width="427" height="533" /></a></p>
<p>15) Pour avoir les détails de notre liste dans la liste elle-même nous allons devoir modifier la vue par défaut de notre liste et afficher les colonnes désirées.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image021_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image021" border="0" alt="clip_image021" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image021_thumb.png" width="609" height="440" /></a></p>
<p>16) Dans l?onglet List, on clique sur « Modify view ». On va modifier l?ordre des colonnes et choisir les colonnes que l?on veut rendre visibles.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image022_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image022" border="0" alt="clip_image022" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image022_thumb.png" width="602" height="465" /></a></p>
<p>On clique sur Ok pour voir le résultat.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image024_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image024" border="0" alt="clip_image024" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image024_thumb.jpg" width="625" height="322" /></a></p>
<p>17) Si maintenant on veut ajouter une colonne qui n?est pas dans notre content type du type salaire par exemple.</p>
<p>On va cliquer sur create columns dans l?onglet List.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image025_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image025" border="0" alt="clip_image025" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image025_thumb.png" width="590" height="439" /></a></p>
<p>18) Nous allons ajouter une colonne salaire de type currency (monnaie) avec 0 décimales, et tout en bas vous voyez 2 check box, une qui permet d?ajouter cette colonne à tous les contents types, et une autre qui va l?ajouter à la vue par défaut de notre liste. Si nous l?ajoutons juste à notre vue par défaut, nous n?aurons pas la possibilité de la renseigner dans notre content type lors de l?ajout ou de la modification donc il est intéressant de laisser les 2 cases à cocher activées par défaut.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image026_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image026" border="0" alt="clip_image026" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image026_thumb.png" width="341" height="684" /></a></p>
<p>On voit maintenant dans notre vue que salaire est présenté.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image028_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image028" border="0" alt="clip_image028" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image028_thumb.jpg" width="717" height="66" /></a></p>
<p>19) Si on clique sur notre item test on voit que salaire est présent mais non renseigné ;</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image029_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image029" border="0" alt="clip_image029" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image029_thumb.png" width="486" height="619" /></a></p>
<p>20) On va cliquer sur « Edit Item » en haut à gauche pour pouvoir le renseigner.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image030_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image030" border="0" alt="clip_image030" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image030_thumb.png" width="647" height="449" /></a></p>
<p>On fait save</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image032_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image032" border="0" alt="clip_image032" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image032_thumb.jpg" width="669" height="54" /></a></p>
<p>21) Si on veut ajouter un nouvel item, on clique sur « Add new Item » :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image033_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image033" border="0" alt="clip_image033" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1c215c2ed019_D6C3/clip_image033_thumb.png" width="649" height="517" /></a></p>
<p>On voit que salaire fait maintenant partie de notre content type.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Création de content type avec SharePoint</title>
		<link>https://blog.developpez.com/laurentvalente/p10478/sharepoint-2010/creation_de_content_type_avec_sharepoint</link>
		<comments>https://blog.developpez.com/laurentvalente/p10478/sharepoint-2010/creation_de_content_type_avec_sharepoint#comments</comments>
		<pubDate>Mon, 07 Nov 2011 14:14:01 +0000</pubDate>
		<dc:creator><![CDATA[LaurentValente]]></dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans les listes et les librairies, les utilisateurs créent du contenu. SharePoint Server 2010 offre une fonctionnalité de gestion de contenu, qui commence par la capacité à décrire le contenu avec des métadonnées en utilisant des colonnes puis à définir les types de contenu. Les types de contenu sont des définitions qui peuvent être stockées dans des listes et des bibliothèques. Ils sont, en effet, un schéma pour les types d&#8217;objets qui peuvent exister dans [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans les listes et les librairies, les utilisateurs créent du contenu. </p>
<p>SharePoint Server 2010 offre une fonctionnalité de gestion de contenu, qui commence par la capacité à décrire le contenu avec des métadonnées en utilisant des colonnes puis à    <br />définir les types de contenu.</p>
<p>Les types de contenu sont des définitions qui peuvent être stockées dans des listes et des bibliothèques. Ils sont, en effet, un schéma pour les types d&rsquo;objets qui peuvent exister dans un site. Les types de contenu sont un composant important de l?architecture de l&rsquo;information (AI), qui se réfère généralement à la fois à la hiérarchie des types de contenu et à la taxonomie.</p>
<p><span id="more-5"></span></p>
<p>Les types de contenu sont limités à l&rsquo;emplacement dans lequel ils sont créés et tous les sous-sites. Vous pouvez créer du contenu types dans n&rsquo;importe quel site. Cependant, il est une meilleure pratique, si possible, de créer des types de contenu dans le site de niveau supérieur d&rsquo;une collection de sites afin que les types de contenu soient disponibles pour tous les sites dans la collection de sites.    <br />Pour déployer les types de contenus à travers plusieurs collections de sites, vous pouvez utiliser Visual Studio pour définir le type de contenu comme une solution (. wsp du fichier). Ceci est possible dans SharePoint 2007 et SharePoint 2010.     <br />SharePoint 2010 introduit l&rsquo;application des métadonnées de services gérés, qui publie les types de contenu et les colonnes d&rsquo;une collection de sites à travers les collections de sites, applications Web, et les fermes.</p>
<p>Création d?un site content type :</p>
<p>1) Comme nous l?avons vu plus haut, il est intéressant de ce placer dans le site « Root » de notre collection de site afin que le content type que nous allons créer soit accessible à ce site et à tous ses sous sites.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image001_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image001_thumb.png" width="684" height="217" /></a></p>
<p>2) On fait site actions / site settings</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image002_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image002_thumb.png" width="395" height="709" /></a></p>
<p>3) La fenêtre de gestion du site s?ouvre.</p>
<p>4) On clique sur site content types dans la partie Galeries.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image003_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image003_thumb.png" width="568" height="281" /></a></p>
<p>5) La fenêtre gestion des sites contents types s?ouvre, on clique sur le bouton Create.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image004_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image004_thumb.png" width="609" height="238" /></a></p>
<p>6) Nous allons créer un nouveau content type comme suit :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image005_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image005_thumb.png" width="681" height="362" /></a></p>
<p>Description :</p>
<p>Name : Le nom de notre content type comme notre content type peut être partagé par plusieurs sites le nom doit être parlant.</p>
<p>Description : Idem la description peut être très utile donc il est important qu?elle soit renseignée.</p>
<p>Parent content type : le content type héritera des caractéristiques de notre sélection sur les deux listes déroulantes. Ici nous voyons dans la description sous la deuxième boite déroulante qui dit que nous allons créer un nouvel item de liste.</p>
<p>Les content type parents proposés sont :</p>
<p>- Document content type</p>
<p>- Folder content type</p>
<p>- List Content type</p>
<p>New Group : nous allons créer un nouveau groupe qui contiendra les content type de notre société.</p>
<p>7) On clique sur le bouton OK.</p>
<p>8) La fenêtre de gestion de notre content type s?ouvre </p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image006_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image006_thumb.png" width="657" height="540" /></a></p>
<p>Nous pouvons ici associer un workflow à notre content type (Workflow settings) ou un modèle de document (Advanced settings). Nous verrons cela dans un autre article.</p>
<p>9) Nous allons ajouter des champs à notre Content type.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image007_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image007_thumb.png" width="307" height="547" /></a></p>
<p>On clique sur « Add from new site columns? pour pouvoir créer nos propres colonnes et leurs type.</p>
<p>Nous allons créer un champ nom (texte), photo (image), Poste (choix multiple), âge (numérique).</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image008_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image008_thumb.png" width="451" height="828" /></a></p>
<p>Maintenant que nous avons créé un groupe (GroupeContent), nous allons mettre les prochaines colonnes dans ce groupe pour qu?elles soient intégrées au content type.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image009_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image009_thumb.png" width="454" height="1012" /></a></p>
<p>Pour le type numérique, on peut spécifier une marge haute et / ou basse et le nombre de décimale.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image010_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image010_thumb.png" width="427" height="962" /></a></p>
<p>Pour les images, on peut soit donner le lien, soit montrer l?image.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image011_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image011_thumb.png" width="381" height="1000" /></a></p>
<p>Pour les champs à choix multiple on entre les choix possibles et on met celui par défaut.</p>
<p>Voilà le content type est prêt, nous allons modifier l?ordre des champs.</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image012_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image012_thumb.png" width="312" height="460" /></a></p>
<p>On clique sur Column order :</p>
<p><a href="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image013_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://blog.developpez.com/media/413/Windows-Live-Writer/1b45f7e5272c_D53A/clip_image013_thumb.png" width="610" height="352" /></a></p>
<p>Une fois le numéro des colonnes correct on clique sur OK.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
