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 :
Ni avoir une query dynamique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 IF @idsite IS NULL BEGIN SELECT END ELSE BEGIN SELECT END
J’aurais aimé n’avoir qu’un seul SELECT mais je tourne en rond… quelque chose comme ceci :
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.
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
Avez-vous une idée ? Un conseil ?
Merci pour votre aide.
Raphaël.
Partager