<?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>Blog SQL d&#039;un développeur Microsoft. &#187; Interrogation</title>
	<atom:link href="https://blog.developpez.com/ylarvor/pcategory/interrogation/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ylarvor</link>
	<description>SQL or No-SQL !</description>
	<lastBuildDate>Sat, 04 Jun 2016 19:39:50 +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>Connaissez vous l&#8217;instruction GO [count] ?</title>
		<link>https://blog.developpez.com/ylarvor/p5056/interrogation/sql/go_count</link>
		<comments>https://blog.developpez.com/ylarvor/p5056/interrogation/sql/go_count#comments</comments>
		<pubDate>Fri, 08 Feb 2008 13:32:29 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l&#8217;accepte pas! lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx Exemple : le problème N°6 de sqlpro ( concours developpez.com ) Pour cet exercice, il s&#8217;agit d&#8217;alimenter les nombres de 0 à 9999 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l&rsquo;accepte pas!</p>
<p>lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx</p>
<p><span id="more-23"></span></p>
<p>Exemple : le problème N°6 de sqlpro ( <a href="http://sqlpro.developpez.com/Exercices/Index.html">concours developpez.com</a> )</p>
<p>Pour cet exercice,  il s&rsquo;agit d&rsquo;alimenter les nombres de 0 à 9999 dans une table de nom T_ENTIER_ENT contenant un seul champ de type entier et de nom ENT_N. Au départ, cette table contient les nombres de 0 à 9.<br />
J&rsquo;ai intitulé ce problème, &lsquo;énumération&rsquo;&#8230; </p>
<p>La table T_ENTIER_NET est ainsi constituée :   </p>
<p>CREATE TABLE T_ENTIER_ENT<br />
(ENT_N INTEGER);</p>
<p>INSERT INTO T_ENTIER_ENT VALUES (0) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (1) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (2) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (3) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (4) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (5) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (6) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (7) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (8) ;<br />
INSERT INTO T_ENTIER_ENT VALUES (9) ;</p>
<p>ENT_N<br />
&#8212;&#8212;<br />
0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</p>
<p>Sauriez vous faire une telle requête avec un seul update ?</p>
<p>Voici un extrait de la table des données à insérer : </p>
<p>NOMBRE<br />
&#8212;&#8212;&#8212;&#8211;<br />
10<br />
11<br />
12<br />
13<br />
14<br />
&#8230;<br />
9995<br />
9996<br />
9997<br />
9998<br />
9999 </p>
<p>Ma réponse :</p>
<p>INSERT INTO T_ENTIER_ENT(ENT_N) SELECT MAX(ENT_N)+1 FROM T_ENTIER_ENT;<br />
go 9991</p>
<p>prodigieux, non ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pourquoi ne trie t&#8217;on jamais une vue en SQL ?</title>
		<link>https://blog.developpez.com/ylarvor/p5030/interrogation/sql/vue_et_tri</link>
		<comments>https://blog.developpez.com/ylarvor/p5030/interrogation/sql/vue_et_tri#comments</comments>
		<pubDate>Mon, 04 Feb 2008 19:15:19 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[En SQL ANSI, il est connu qu&#8217;une vue ne doit jamais être trié. On n&#8217;utilise donc jamais de ORDER BY dans une vue. J&#8217;avoue que j&#8217;ai essayé de trouver une bon raison à cela et je l&#8217;ai finalement trouvé&#8230; Comme vous le savez, une vue n&#8217;est qu&#8217;un enregistrement de requête, elle n&#8217;a pas d&#8217;existence physique [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>En SQL ANSI, il est connu qu&rsquo;une vue ne doit jamais être trié</strong>. On n&rsquo;utilise donc jamais de ORDER BY dans une vue.<br />
J&rsquo;avoue que j&rsquo;ai essayé de trouver une bon raison à cela et je l&rsquo;ai finalement trouvé&#8230;</p>
<p>Comme vous le savez, une vue n&rsquo;est qu&rsquo;un enregistrement de requête, elle n&rsquo;a pas d&rsquo;existence physique comme une table à part les vues matérialisées mais c&rsquo;est un autre problème!</p>
<p>Imaginez le scénario suivant :</p>
<p>Vous créez sur sql serveur une vue avec un order by. SQL Serveur 2000 ne posera aucune question et conservera le tri en réserve comme vous le souhaitez.</p>
<p>CREATE VIEW MAVUE AS SELECT NOM,PRENOM FROM FAMILLE ORDER BY NOM,PRENOM;</p>
<p>Jérome, votre collègue de toujours à besoin de cette vue mais lui, il veut trié par PRENOM,NOM&#8230;il écrit donc sa requète :</p>
<p>SELECT * FROM MAVUE ORDER BY PRENOM,NOM;</p>
<p>Jérome a le droit d&rsquo;écrire cela.</p>
<p>Maintenant, Qu&rsquo;avez vous demander à SQL SERVEUR 2000 ?</p>
<p>Il doit trier par NOM,PRENOM puis par PRENOM,NOM dans la même requête, avouez que c&rsquo;est fort en chocolat de demander cela. </p>
<p>Voilà, pour moi, la raison pratique pour laquelle on ne doit jamais écrire un order by dans une vue. Parce qu&rsquo;il y a aura 10 utilisateurs différents de la vue et qu&rsquo;aucun d&rsquo;eux n&rsquo;aura les mêmes besoins. Alors même si sql serveur 2000 autorise le order by dans une vue, ne l&rsquo;utilisez jamais dans la vue mais en dehors, au plus prés du besoin!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quand utilise t&#8217;on du code .NET embarqué dans SQL Server 2005 ?</title>
		<link>https://blog.developpez.com/ylarvor/p6846/programmation/c/etude_de_performance_du_code_net_embarqu_2005</link>
		<comments>https://blog.developpez.com/ylarvor/p6846/programmation/c/etude_de_performance_du_code_net_embarqu_2005#comments</comments>
		<pubDate>Fri, 28 Nov 2008 19:40:02 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server 2005]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comme vous le savez déjà, depuis SQL Server 2005, Microsoft a mis en place l&#8217; utilisation du langage .NET dans SQL Server. Etudions par un simple exemple les performances ? Quand devrons-nous utiliser quand même ce SQLCLR ? 1 Etude des performances. 1.1 Matériel. L&#8217; étude de Rudi Bruchez sur .net avec SQL Server paru [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme vous le savez déjà, depuis SQL Server 2005, Microsoft a mis en place l&rsquo; utilisation du langage .NET dans SQL Server. Etudions par un simple exemple les performances ? Quand devrons-nous utiliser quand même ce SQLCLR ?</p>
<p>  <span id="more-28"></span>
<p><strong>1 Etude des performances.</strong></p>
<p><strong>1.1 Matériel.</strong></p>
<p>L&rsquo; étude de Rudi Bruchez sur .net avec SQL Server paru sur Developpez.com.</p>
<p>Un portable moyen de gamme.</p>
<p>Visual Studio 2008 express.</p>
<p>SQL Server 2005 developper.</p>
<p>Une table Arbre[primary key identity, NOM(varchar[25]) contenant 200 000 lignes.</p>
<p><strong>1.2 Requête SQL.</strong></p>
<p>La requête SQL : SELECT NOM FROM Arbre; pour 200 000 lignes Arbre N°Identity.</p>
<p>Durée d&rsquo; exécution sur le manager : 7 secondes. </p>
<p><strong>1.3 Procédure stockée SQL.</strong></p>
<p>CREATE PROCEDURE ListeNomsArbres AS SELECT NOM FROM Arbre;   <br />GO</p>
<p>Durée d&rsquo; exécution sur le manager : 7 secondes.</p>
<p><strong>1.3 Procédure SQLCLR.</strong></p>
<p>La procédure reprend la commande SQL mais l&rsquo; encapsule dans du code .NET chargé dans l&rsquo; SQLOS de Sql Server.</p>
<p>using System.Data;   <br />using System.Data.SqlClient;    <br />using System.Data.SqlTypes;    <br />using Microsoft.SqlServer.Server; </p>
<p>public class StoredProcedures   <br />{    <br />    [Microsoft.SqlServer.Server.SqlProcedure]    <br />    public static void GetArbreFromCTIFL()    <br />    {    <br />        try    <br />        {    <br />            using (SqlConnection cn = new SqlConnection(&laquo;&nbsp;context connection=true&nbsp;&raquo;))    <br />            {    <br />                cn.Open();    <br />                string sql = @&nbsp;&raquo;SELECT NOM    <br />                                FROM ARBRE&nbsp;&raquo;;    <br />                SqlCommand cmd = new SqlCommand(sql, cn);    <br />                SqlContext.Pipe.Send(cmd.ExecuteReader());    <br />            }    <br />        }    <br />        catch (Exception e)    <br />        {    <br />            SqlPipe pipe = SqlContext.Pipe;    <br />            pipe.Send(&laquo;&nbsp;erreur d&rsquo;execution&nbsp;&raquo;);    <br />            pipe.Send(e.Message);    <br />            pipe.Send(e.StackTrace);    <br />        }    <br />    }    <br />}</p>
<p>Après mise en place sur le server suivant les indication de rudib.</p>
<p>L&rsquo; exécution de la procédure prend 17 secondes.</p>
<p><strong>Le temps d&rsquo; exécution est donc bien plus lent, le double.</strong></p>
<p><strong>2 Peux on utiliser le SQLCLR ?</strong></p>
<p>D&rsquo; abord,du point de vue de SQL Server, Il suffit de créer un Assembly pointant sur le répertoire C:\ du serveur et contenant la librairie .net compilée. L&rsquo; Assembly crée, la procédure devient très simple à déclarer.</p>
<p>D&rsquo; après &laquo;&nbsp;Administrating SQL Server&nbsp;&raquo;, le SQLCLR répond à des problématiques de communication de SQL Server avec son environnement non conventionnels ( exemple : mail, sms&#8230; )</p>
<p>Autre cas d&rsquo; usage du SQLCLR, les traitements algorithmiques lourds, portant sur quelques lignes, en mode pas à pas.</p>
<p>Autre cas d&rsquo; utilisation du SQLCLR, le calcul complexe, à partir de données que l&rsquo; on souhaite mettre à disposition dans une procédure stockée.</p>
<p><a href="http://blog.developpez.com/mikedavem/p7285/sql-server-2005/clr/title-123/#more7285" target="new">lien sur un article de mike daven sur le CLR.</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que signifie le terme SQL Dynamique sous SQL Server ?</title>
		<link>https://blog.developpez.com/ylarvor/p6823/interrogation/sql/sql_dynamique_sous_sql_server</link>
		<comments>https://blog.developpez.com/ylarvor/p6823/interrogation/sql/sql_dynamique_sous_sql_server#comments</comments>
		<pubDate>Mon, 24 Nov 2008 12:53:46 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Chaque développeur confirmé ou DBA connaît la définition et l&#8217; usage du SQL Dynamique mais une personne qui découvre les bases de données ne saura pas nécessairement ce que signifie ce terme surtout que l&#8217; aide en ligne de SQL Server ne fournit pas de définition du concept et que très peu d&#8217; auteurs ont [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Chaque développeur confirmé ou DBA connaît la définition et l&rsquo; usage du SQL Dynamique mais une personne qui découvre les bases de données ne saura pas nécessairement ce que signifie ce terme surtout que l&rsquo; aide en ligne de SQL Server ne fournit pas de définition du concept et que très peu d&rsquo; auteurs ont trouvé utile de préciser ce concept, spécifiquement pour SQL Server, sur le web.</p>
<p>  <span id="more-24"></span>
<p><u>1 Définition.</u></p>
<p>Le SQL Dynamique permet de construire une requête de toute pièce dans une chaîne de caractères puis d&rsquo; exécuter la chaîne avec la commande EXEC, aussi nommée EXECUTE.</p>
<p>Exemple:</p>
<p>/* Déclaration des variables */   <br />DECLARE @MaColonne AS VARCHAR(25);    <br />DECLARE @MonSQL AS VARCHAR(500);    <br />/* Définition du paramètre */    <br />SET @MaColonne = &lsquo;Nom';    <br />/* Ecriture de la requête */    <br />SET @MonSQL = &lsquo;SELECT &lsquo; + @MaColonne + &lsquo; FROM Agriculteur';    <br />/* Exécution de la requête */    <br />EXEC(@MonSQL)</p>
<p> <u>2 Usage.</u></p>
<p>L&rsquo; usage le plus fréquent est un site de commerce électronique qui propose de sélectionner des articles suivant plusieurs critères différents ( date, auteur, édition, langue ).</p>
<p>Dans la procédure stockée, on doit construire la chaîne de caractères en s&rsquo; appliquant à ajouter dans le WHERE les différentes conditions qui ont été choisis par l&rsquo; internaute. Une fois, la chaîne de caractères construite. On peux l&rsquo; exécuter et ramener les livres sélectionnées.</p>
<p><u>3 Approfondissements.</u></p>
<p>Les problèmes que soulève le SQL Dynamique sont le fait que le EXECUTE aura un environnement d&rsquo; exécution différent de la procédure stockée qui l&rsquo; appelle. Cela entraîne différents problèmes, notamment, si l&rsquo; on désire ramener un paramètre depuis EXECUTE.</p>
<p>Pour résoudre le problème des paramètres de sorties, on utilise la procédure stockée système SP_EXECUTESQL.</p>
<p><u>3.1 SP_EXECUTESQL.</u></p>
<p>Le premier avantage de SP_EXECUTESQL est que le plan d&rsquo; exécution de la requête est conservé par SQL Server entre les différentes exécutions. Pour un lot d&rsquo; une centaine d&rsquo; exécution, cela peut générer un gain de temps appréciable par rapport à l&rsquo; utilisation de EXEC.</p>
<p>Le plus grand avantage de cette fonction est l&rsquo; utilisation de paramètres de sorties.</p>
<p>Exemple :</p>
<p>DECLARE @IntVariable int;   <br />DECLARE @SQLString nvarchar(500);    <br />DECLARE @ParmDefinition nvarchar(500);    <br />DECLARE @max_title varchar(30); </p>
<p>SET @IntVariable = 197;   <br />SET @SQLString = N&rsquo;SELECT @max_titleOUT = max(Title)     <br />   FROM AdventureWorks.HumanResources.Employee    <br />   WHERE ManagerID = @level';    <br />SET @ParmDefinition = N&rsquo;@level tinyint, @max_titleOUT varchar(30) OUTPUT'; </p>
<p>EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT;   <br />SELECT @max_title;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL SERVEUR 2000] [CONCOURS SQL PRO] Problème N°2 Le publipostage ( 2 étoiles ).</title>
		<link>https://blog.developpez.com/ylarvor/p5747/interrogation/concours_sql_pro/sql_serveur_2000_concours_sql_pro_proble</link>
		<comments>https://blog.developpez.com/ylarvor/p5747/interrogation/concours_sql_pro/sql_serveur_2000_concours_sql_pro_proble#comments</comments>
		<pubDate>Fri, 23 May 2008 21:30:22 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Concours_SQL_Pro]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[( Première Partie ) Problème N°2 Le publipostage. J&#8217;avais résolu ce problème d&#8217;une façon élégante à l&#8217;aide des CTE sous SQL Serveur 2005. Aujourd&#8217;hui, je vous livre la solution classique, pour sql serveur 2000. D&#8217;abord, nous devons créer une table de numeros&#8230; CREATE TABLE NUMEROS(NUMERO INTEGER); INSERT INTO NUMEROS(NUMERO) VALUES (1); INSERT INTO NUMEROS(NUMERO) VALUES [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html">( Première Partie ) Problème N°2 Le publipostage.</a></p>
<p>J&rsquo;avais résolu ce problème d&rsquo;une façon élégante à l&rsquo;aide des CTE sous SQL Serveur 2005.<br />
Aujourd&rsquo;hui, je vous livre la solution classique, pour sql serveur 2000.<br />
<span id="more-56"></span><br />
D&rsquo;abord, nous devons créer une table de numeros&#8230;</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">CREATE TABLE NUMEROS(NUMERO INTEGER); <br />
INSERT INTO NUMEROS(NUMERO) VALUES (1); <br />
INSERT INTO NUMEROS(NUMERO) VALUES (2); <br />
INSERT INTO NUMEROS(NUMERO) VALUES (3); <br />
INSERT INTO NUMEROS(NUMERO) VALUES (4); <br />
INSERT INTO NUMEROS(NUMERO) VALUES (5);</div></div>
<p>Ensuite, il suffit d&rsquo;écrire la requete suivante :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT PRS_VILLE,PRS_NOM FROM T_PERSONNE_PRS,NUMEROS WHERE T_PERSONNE_PRS.PRS_NOMBRE&gt;=NUMEROS.NUMERO</div></div>
<p>D&rsquo;aprés SQL Pro, il s&rsquo;agit d&rsquo;une requete d&rsquo;inequi jointure!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[CONCOURS SQL PRO] Problème n° 4 &#8211; les chambres libres ( 2 étoiles )</title>
		<link>https://blog.developpez.com/ylarvor/p5748/interrogation/concours_sql_pro/concours_sql_pro_probleme_nd_4_les_chamb</link>
		<comments>https://blog.developpez.com/ylarvor/p5748/interrogation/concours_sql_pro/concours_sql_pro_probleme_nd_4_les_chamb#comments</comments>
		<pubDate>Fri, 23 May 2008 22:11:58 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Concours_SQL_Pro]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un exercice assez simple de sql pour sql serveur 2000. Enonce :Problème n° 4 &#8211; les chambres libres Solution : Question 1 : SELECT CHB_NUM &#160; FROM T_CHAMBRE_CHB &#160; WHERE CHB_NUM NOT IN &#160; ( SELECT CHB_NUM &#160; FROM T_PLANNING_PLN &#160; WHERE PLN_LIBRE = 'FALSE' &#160; AND &#160;PLN_JOUR&#62;='11/01/2000' AND PLN_JOUR&#60;='14/01/2000') Question 2 : SELECT CHB_NUM,'TRUE' [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un exercice assez simple de sql pour sql serveur 2000.<br />
Enonce :<a href="http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html">Problème n° 4 &#8211; les chambres libres</a><br />
Solution :<span id="more-57"></span><br />
Question 1 :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT CHB_NUM &nbsp;<br />
FROM T_CHAMBRE_CHB &nbsp;<br />
WHERE CHB_NUM NOT IN &nbsp;<br />
( SELECT CHB_NUM &nbsp;<br />
FROM T_PLANNING_PLN &nbsp;<br />
WHERE PLN_LIBRE = 'FALSE' &nbsp;<br />
AND &nbsp;PLN_JOUR&gt;='11/01/2000' AND PLN_JOUR&lt;='14/01/2000')</div></div>
<p>Question 2 :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT CHB_NUM,'TRUE' &nbsp;<br />
FROM T_CHAMBRE_CHB &nbsp;<br />
WHERE CHB_NUM NOT IN &nbsp;<br />
( SELECT CHB_NUM &nbsp;<br />
FROM T_PLANNING_PLN &nbsp;<br />
WHERE PLN_LIBRE = 'FALSE' &nbsp;<br />
AND &nbsp;PLN_JOUR='13/01/2000') <br />
UNION <br />
SELECT CHB_NUM,'FALSE' &nbsp;<br />
FROM T_CHAMBRE_CHB &nbsp;<br />
WHERE CHB_NUM IN &nbsp;<br />
( SELECT CHB_NUM &nbsp;<br />
FROM T_PLANNING_PLN &nbsp;<br />
WHERE PLN_LIBRE = 'FALSE' &nbsp;<br />
AND &nbsp;PLN_JOUR='13/01/2000')</div></div>
<p>Question 3 :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">CREATE TABLE CALENDRIER(DATEDUJOUR DATETIME); <br />
INSERT INTO CALENDRIER(DATEDUJOUR) VALUES ('11/01/2000'); <br />
INSERT INTO CALENDRIER(DATEDUJOUR) VALUES ('12/01/2000'); <br />
INSERT INTO CALENDRIER(DATEDUJOUR) VALUES ('13/01/2000'); <br />
INSERT INTO CALENDRIER(DATEDUJOUR) VALUES ('14/01/2000'); <br />
&nbsp;<br />
SELECT DATEDUJOUR,CHB_NUM,'TRUE' &nbsp;<br />
FROM T_CHAMBRE_CHB,CALENDRIER &nbsp;<br />
WHERE CHB_NUM NOT IN &nbsp;<br />
( SELECT CHB_NUM &nbsp;<br />
FROM T_PLANNING_PLN &nbsp;<br />
WHERE PLN_LIBRE = 'FALSE' &nbsp;<br />
AND &nbsp;PLN_JOUR=CALENDRIER.DATEDUJOUR) <br />
UNION <br />
SELECT CALENDRIER.DATEDUJOUR,CHB_NUM,'FALSE' &nbsp;<br />
FROM T_CHAMBRE_CHB ,CALENDRIER <br />
WHERE CHB_NUM IN &nbsp;<br />
( SELECT CHB_NUM &nbsp;<br />
FROM T_PLANNING_PLN &nbsp;<br />
WHERE PLN_LIBRE = 'FALSE' &nbsp;<br />
AND &nbsp;PLN_JOUR=CALENDRIER.DATEDUJOUR)</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment définir des paramètres optionnels pour une procédure stockée ?</title>
		<link>https://blog.developpez.com/ylarvor/p6470/interrogation/t_sql/comment_definir_des_parametres_optionnel</link>
		<comments>https://blog.developpez.com/ylarvor/p6470/interrogation/t_sql/comment_definir_des_parametres_optionnel#comments</comments>
		<pubDate>Sat, 27 Sep 2008 19:32:00 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[T_SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce matin, j&#8217; étais en discussion avec un prospect, et il me pose la question suivante : savez-vous comment définir un paramètre optionnel pour une SP ? Ma réponse à froid : tous les paramètres sont obligatoires en .Net mais je place un IF dans la procédure stockée afin que si la valeur soit égale [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce matin, j&rsquo; étais en discussion avec un prospect, et il me pose la question suivante : savez-vous comment définir un paramètre optionnel pour une SP ?</p>
<p>Ma réponse à froid : tous les paramètres sont obligatoires en .Net mais je place un IF dans la procédure stockée afin que si la valeur soit égale à 0 on n&rsquo; effectue une requête sans le paramètre.</p>
<p>En fait, il est parfaitement possible d&rsquo; avoir un paramètre optionnel, c&rsquo; est à dire que l&rsquo; on ne déclare pas dans le code ASP.NET. Il suffit d&rsquo; affecter une valeur par défaut au paramètre de la procédure par exemple</p>
<p>CREATE PROCEDURE ListeSalarie</p>
<p>@Age int = 18</p>
<p>AS</p>
<p>SELECT Nom,Matricule FROM Salarie WHERE Age>@Age;</p>
<p>Par cette procédure, vous pouvez appeler la procédure ListeSalarie sans paramètre pour avoir la liste des salarie supérieur à l&rsquo; age légal de la majorité.</p>
<p>Par cette procédure, vous pouvez appeler la procédure ListeSalarie avec un paramétre @age pour avoir la liste des salarie supérieur à cette @age donné.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[SQL] Concours SQL Pro &#8211; le publipostage (2 étoiles).</title>
		<link>https://blog.developpez.com/ylarvor/p5651/interrogation/sql-server-2005/sql_concours_sql_pro</link>
		<comments>https://blog.developpez.com/ylarvor/p5651/interrogation/sql-server-2005/sql_concours_sql_pro#comments</comments>
		<pubDate>Thu, 08 May 2008 00:32:31 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Concours_SQL_Pro]]></category>
		<category><![CDATA[SQL Server 2005]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comme la date des résultats est dépassée et que je pense que le concours reste à titre pédagogique, je me permet de publier quelques résultats qui peuvent vous instruire. Aujourd&#8217;hui, utilisation des CTE pour multiplie une ligne. ( Première Partie ) Problème N°2 Le publipostage. Pour info, j&#8217;ai cherche un moment comment multiplier des données [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme la date des résultats est dépassée et que je pense que le concours reste à titre pédagogique, je me permet de publier quelques résultats qui peuvent vous instruire.</p>
<p>Aujourd&rsquo;hui, utilisation des CTE pour multiplie une ligne.</p>
<p><a href="http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html">( Première Partie ) Problème N°2 Le publipostage.</a> Pour info, j&rsquo;ai cherche un moment comment multiplier des données avant de comprendre que c&rsquo;était les CTE la solution.</p>
<p>Réponse :<br />
<span id="more-53"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">WITH T_PERSONNE_PRS_TEMP(PRS_NOM,PRS_VILLE,PRS_NOMBRE) &nbsp;<br />
AS <br />
&nbsp; &nbsp;(SELECT PRS_NOM,PRS_VILLE,PRS_NOMBRE &nbsp;<br />
&nbsp; &nbsp; FROM &nbsp; T_PERSONNE_PRS <br />
&nbsp; &nbsp; WHERE &nbsp;PRS_NOMBRE &gt; 0 <br />
&nbsp; &nbsp; UNION &nbsp;ALL <br />
&nbsp; &nbsp; SELECT T_PERSONNE_PRS.PRS_NOM,T_PERSONNE_PRS.PRS_VILLE,T_PERSONNE_PRS.PRS_NOMBRE - 1 <br />
&nbsp; &nbsp; FROM &nbsp; T_PERSONNE_PRS &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;INNER JOIN T_PERSONNE_PRS_TEMP &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ON T_PERSONNE_PRS_TEMP.PRS_NOMBRE = T_PERSONNE_PRS.PRS_NOMBRE) <br />
SELECT * <br />
FROM T_PERSONNE_PRS_TEMP ORDER BY PRS_NOM,PRS_VILLE</div></div>
<p>PS : je m&rsquo;en vais sur le champs demander l&rsquo;autorisation de continuer la publication de solutions aux problèmes fournis par sql pro&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL] Concours sql pro &#8211;  Problème n° 39 &#8211;  abstract et mots clefs (4 étoiles).</title>
		<link>https://blog.developpez.com/ylarvor/p5715/interrogation/concours_sql_pro/sql_concours_sql_pro_probleme_nd_39_abst</link>
		<comments>https://blog.developpez.com/ylarvor/p5715/interrogation/concours_sql_pro/sql_concours_sql_pro_probleme_nd_39_abst#comments</comments>
		<pubDate>Sat, 17 May 2008 17:31:07 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Concours_SQL_Pro]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Concours : http://sqlpro.developpez.com/Exercices/Index.html Enoncé : http://sqlpro.developpez.com/Exercices/SQL_AZ_P4.html Solution : voir ci dessous. Indice : il s&#8217;agit d&#8217;un nouveau problème à base de CTE. WITH T(PPR_TITRE,Motcle,LesAutresMotcles) AS ( SELECT PPR_TITRE, &#160; &#160; &#160; &#160; &#160; CASE &#160; &#160; &#160; &#160; &#160; &#160; &#160;WHEN CHARINDEX('#', PPR_ABSTRACT) &#62; 0 THEN LTRIM(SUBSTRING(PPR_ABSTRACT, 1, CHARINDEX('#', PPR_ABSTRACT) - 1)) &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Concours : http://sqlpro.developpez.com/Exercices/Index.html<br />
Enoncé : http://sqlpro.developpez.com/Exercices/SQL_AZ_P4.html<br />
Solution : voir ci dessous.<br />
Indice : il s&rsquo;agit d&rsquo;un nouveau problème à base de CTE.<br />
<span id="more-55"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">WITH T(PPR_TITRE,Motcle,LesAutresMotcles) <br />
AS <br />
( <br />
SELECT PPR_TITRE, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; CASE &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHEN CHARINDEX('#', PPR_ABSTRACT) &gt; 0 THEN LTRIM(SUBSTRING(PPR_ABSTRACT, 1, CHARINDEX('#', PPR_ABSTRACT) - 1)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE PPR_ABSTRACT <br />
&nbsp; &nbsp; &nbsp; &nbsp; END AS Motcle, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;LTRIM(SUBSTRING(PPR_ABSTRACT, CHARINDEX('#', PPR_ABSTRACT) + 1, LEN(PPR_ABSTRACT) - CHARINDEX('#', PPR_ABSTRACT))) AS LesAutresMotcles <br />
&nbsp;<br />
FROM &nbsp; T_PAPIER_PPR <br />
UNION ALL <br />
SELECT RP.PPR_TITRE, <br />
&nbsp; &nbsp; &nbsp; &nbsp; CASE &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHEN CHARINDEX('#', LesAutresMotcles) &gt; 0 THEN LTRIM(SUBSTRING(LesAutresMotcles, 1, CHARINDEX('#', LesAutresMotcles) - 1)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE LesAutresMotcles <br />
&nbsp; &nbsp; &nbsp; &nbsp; END, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; CASE &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHEN CHARINDEX('#', LesAutresMotcles) &gt; 0 THEN LTRIM(SUBSTRING(LesAutresMotcles, CHARINDEX('#', LesAutresMotcles) + 1, LEN(LesAutresMotcles) - CHARINDEX('#', LesAutresMotcles))) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ELSE NULL <br />
&nbsp; &nbsp; &nbsp; &nbsp; END <br />
FROM &nbsp; T_PAPIER_PPR RP <br />
&nbsp; &nbsp; &nbsp; &nbsp;INNER JOIN T <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ON T.PPR_TITRE = RP.PPR_TITRE <br />
WHERE LesAutresMotcles IS NOT NULL <br />
) <br />
SELECT Motcle, count(Motcle) <br />
FROM &nbsp; T <br />
GROUP BY Motcle</div></div>
<p>Le week end dernier, je cherchais une solution avec les CTE pour résoudre ce problème sans y arriver et cette semaine, sql pro a poste sur le forum developpez.com, une solution à un problème similaire&#8230; Merci SQL Pro!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SQL]  Problème n° 7 &#8211; le comptage ( 3 étoiles ).</title>
		<link>https://blog.developpez.com/ylarvor/p5667/interrogation/concours_sql_pro/sql_probleme_nd_7_le_comptage</link>
		<comments>https://blog.developpez.com/ylarvor/p5667/interrogation/concours_sql_pro/sql_probleme_nd_7_le_comptage#comments</comments>
		<pubDate>Sat, 10 May 2008 20:27:16 +0000</pubDate>
		<dc:creator><![CDATA[ylarvor]]></dc:creator>
				<category><![CDATA[Concours_SQL_Pro]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je vous encourage à répondre aux nombreux problèmes proposés par sql pro en sql : ici Aujourd&#8217;hui, je vous propose de résoudre un problème par application des fonctions de fenêtrage et de ranking, nouvelle fonctionnalité de sql serveur 2005, dans le but de numéroter des lignes lors d&#8217;un SELECT. Problème : http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html &#8211; Problème n° [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je vous encourage à répondre aux nombreux problèmes proposés par sql pro en sql : <a href="http://sqlpro.developpez.com/Exercices/Index.html">ici</a></p>
<p>Aujourd&rsquo;hui, je vous propose de résoudre un problème par application des fonctions de fenêtrage et de ranking, nouvelle fonctionnalité de sql serveur 2005, dans le but de numéroter des lignes lors d&rsquo;un SELECT.</p>
<p>Problème : http://sqlpro.developpez.com/Exercices/SQL_AZ_P1.html &#8211; Problème n° 7 &#8211; le comptage.</p>
<p>Solution :<br />
<span id="more-54"></span><br />
Select<br />
  PSP_NOM, Row_Number() Over (Order By PSP_NOM) as Numero<br />
From<br />
  T_PROSPECT_PSP<br />
Order by<br />
  PSP_NOM ASC;</p>
<p>Cela m&rsquo;a pris 3 secondes pour identifier la solution, rédiger la requête et obtenir le résultat mais je pense que le problème est probablement plus complexe sous sql serveur 2000.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
