Bonne rencontre,

Je suis confronté à une procédure stockée qui m’avait l’air simple mais dont je ne trouve pas une solution élégante.

Voici la situation en simplifier.

Table banner (idbanner, titre, image)
Table siteweb (idsite, titre, url)
Table banner_siteweb (idbanner,idsite,nbrview)

Je souhaiterai passer dans ma PS réalise deux choses.
  • Donner la liste de toutes les bannières quand on ne spécifie pas un idsite
  • Donner la liste des bannières d’une seul site quand on spécifie un idsite


Ma procédure a donc comme argument @idsite int = null

Je ne désire pas faire un :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
IF @idsite IS NULL
        BEGIN
		SELECTEND
ELSE
	BEGIN
		SELECTEND
Ni avoir une query dynamique.

J’aurais aimé n’avoir qu’un seul SELECT mais je tourne en rond… quelque chose comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 SELECT 
  [dbo].[BannersPub].[idbanner],
  [dbo].[BannersPub].[Title],
  [dbo].[BannersPub].[image],
 FROM [Banner]
 LEFT JOIN [dbo].[banner_siteweb]
 ON [dbo].[banner_siteweb].[idbanner] = [dbo].[BannersPub].[idbanner]
 LEFT JOIN [dbo].[siteweb]
 ON [dbo].[siteweb].[idsite] = [dbo].[banner_siteweb].[idsite]
 WHERE  (ISNULL (@idsite, [dbo].[siteweb].[idsite]) = [dbo].[siteweb].[idsite]) OR [dbo].[siteweb].[idsite] IS NULL
Bon le WHERE est bidon comme je n’arrive pas au résultat souhaité mais c’est pour vous monter vers quoi je me dirige.

Avez-vous une idée ? Un conseil ?

Merci pour votre aide.
Raphaël.