Bonjour à tous
Je reçois une variable dans mon StoreProcedure qui contient el ID du client.
Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne
change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE
different. Est-il possible de faire quelque chose comme cela? Pour avoir la
même logique dan un seul WHERE
WHERE
CASE
WHEN @ID=0 THEN
ID <> @ID
ELSE
ID = @ID
END
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre
semble laisser entendre que tu le vois comme une sorte de "IF")
--
Patrice
"Don Juan" <juanete@gmail.com> a écrit dans le message de groupe de
discussion : EB348C8A-1064-4B4F-B463-F23970B4D479@microsoft.com...
Bonjour à tous
Je reçois une variable dans mon StoreProcedure qui contient el ID du
client.
Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne
change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE
different. Est-il possible de faire quelque chose comme cela? Pour avoir
la même logique dan un seul WHERE
WHERE
CASE
WHEN @ID=0 THEN
ID <> @ID
ELSE
ID = @ID
END
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
Don Juan
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2. maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher
tout le monde.
maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc
on verra le 2.
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous
les ID de 0 alors rien de tout.
"Patrice" <http://www.chez.com/scribe/> wrote in message
news:65907FDD-B26C-46B8-8D46-BDAF1D17BDB4@microsoft.com...
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client
0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre
semble laisser entendre que tu le vois comme une sorte de "IF")
--
Patrice
"Don Juan" <juanete@gmail.com> a écrit dans le message de groupe de
discussion : EB348C8A-1064-4B4F-B463-F23970B4D479@microsoft.com...
Bonjour à tous
Je reçois une variable dans mon StoreProcedure qui contient el ID du
client.
Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne
change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE
different. Est-il possible de faire quelque chose comme cela? Pour avoir
la même logique dan un seul WHERE
WHERE
CASE
WHEN @ID=0 THEN
ID <> @ID
ELSE
ID = @ID
END
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2. maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
Don Juan
Patrice: Pour mieux éxpliquer, il faut comparer la valeur de @ID quand @ID a une valeur de 0 alors le WHERE dois utiliser: WHERE ID<>@ID quand @ID a une valeur different de 0 alors le WHERE dois utilise: WHERE ID=@ID
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
Patrice:
Pour mieux éxpliquer, il faut comparer la valeur de @ID
quand @ID a une valeur de 0 alors le WHERE dois utiliser: WHERE ID<>@ID
quand @ID a une valeur different de 0 alors le WHERE dois utilise: WHERE
ID=@ID
1000 mercis de ton temps!
"Patrice" <http://www.chez.com/scribe/> wrote in message
news:65907FDD-B26C-46B8-8D46-BDAF1D17BDB4@microsoft.com...
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client
0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre
semble laisser entendre que tu le vois comme une sorte de "IF")
--
Patrice
"Don Juan" <juanete@gmail.com> a écrit dans le message de groupe de
discussion : EB348C8A-1064-4B4F-B463-F23970B4D479@microsoft.com...
Bonjour à tous
Je reçois une variable dans mon StoreProcedure qui contient el ID du
client.
Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne
change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE
different. Est-il possible de faire quelque chose comme cela? Pour avoir
la même logique dan un seul WHERE
WHERE
CASE
WHEN @ID=0 THEN
ID <> @ID
ELSE
ID = @ID
END
Patrice: Pour mieux éxpliquer, il faut comparer la valeur de @ID quand @ID a une valeur de 0 alors le WHERE dois utiliser: WHERE ID<>@ID quand @ID a une valeur different de 0 alors le WHERE dois utilise: WHERE ID=@ID
Simplement avec where ID=@id or @id=0 (j'imagine qu'il n'y pas de client 0).
Le CASE retourne une valeur (le pseudo-code semble le laisser entendre semble laisser entendre que tu le vois comme une sorte de "IF")
-- Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
Bonjour à tous Je reçois une variable dans mon StoreProcedure qui contient el ID du client. Alors j'utilise cette ligne de code:
WHERE ID=@ID
Mais si le ID est: 0 alors je dois montrer tous les clients, el la ligne change pour:
WHERE ID <> @ID
Pour le moment j'ai crée deux store procedures, chaque avec un WHERE different. Est-il possible de faire quelque chose comme cela? Pour avoir la même logique dan un seul WHERE WHERE CASE WHEN @ID=0 THEN ID <> @ID ELSE ID = @ID END
1000 mercis d'avance.
Patrice
"Don Juan" a écrit dans le message de groupe de discussion :
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un paramètre...
As tu essayé ?
"Don Juan" <juanete@gmail.com> a écrit dans le message de groupe de
discussion : 924ED663-5C0A-4CEE-8D1A-9F7E6C4EF3F0@microsoft.com...
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour
afficher tout le monde.
maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc
on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous
les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les
lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un
paramètre...
"Don Juan" a écrit dans le message de groupe de discussion :
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un paramètre...
"Don Juan" a écrit dans le message de groupe de discussion :
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un paramètre...
As tu essayé ?
Mes excusses!!!
ça marche, merci.
"Patrice" <http://www.chez.com/scribe/> wrote in message
news:0E11CC67-816E-4650-9368-836A7777CF7F@microsoft.com...
"Don Juan" <juanete@gmail.com> a écrit dans le message de groupe de
discussion : 924ED663-5C0A-4CEE-8D1A-9F7E6C4EF3F0@microsoft.com...
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour
afficher tout le monde.
maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0
donc on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous
les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les
lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un
paramètre...
"Don Juan" a écrit dans le message de groupe de discussion :
En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour afficher tout le monde. maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 donc on verra le 2.
Oui
maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche tous les ID de 0 alors rien de tout.
Non
On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc toutes les lignes seront affichées.
Ne pas confondre id qui est le champ dans la table et @id qui est un paramètre...
As tu essayé ?
SQLpro
Il serait beaucoup plus intelligent de faire : WHERE MaColonne = COALESCE(NULLIF(@ID, 0), MaColonne)
Ou encore, si vous passez NULL à la place de zéro : WHERE MaColonne = COALESCE(@ID, MaColonne)
A +
Frédéric BROUARD - SQLpro - MVP SQL Server Spécialiste SQL/BD modélisation de données SQL & SGBDR http://sqlpro.developpez.com/ Expert SQL Server : http://www.sqlspot.com audits - optimisation - tuning - formation
> "Don Juan" a écrit dans le message de groupe de > discussion : >> En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour >> afficher tout le monde. >> maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 >> donc on verra le 2.
> Oui
>> maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche t ous >> les ID de 0 alors rien de tout.
> Non
> On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc tout es les > lignes seront affichées.
> Ne pas confondre id qui est le champ dans la table et @id qui est un > paramètre...
> As tu essayé ?
Il serait beaucoup plus intelligent de faire :
WHERE MaColonne = COALESCE(NULLIF(@ID, 0), MaColonne)
Ou encore, si vous passez NULL à la place de zéro :
WHERE MaColonne = COALESCE(@ID, MaColonne)
A +
Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits - optimisation - tuning - formation
On 8 oct, 12:10, "Don Juan" <juan...@gmail.com> wrote:
Mes excusses!!!
ça marche, merci.
"Patrice" <http://www.chez.com/scribe/> wrote in message
> "Don Juan" <juan...@gmail.com> a écrit dans le message de groupe de
> discussion : 924ED663-5C0A-4CEE-8D1A-9F7E6C4EF...@microsoft.com...
>> En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour
>> afficher tout le monde.
>> maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0
>> donc on verra le 2.
> Oui
>> maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche t ous
>> les ID de 0 alors rien de tout.
> Non
> On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc tout es les
> lignes seront affichées.
> Ne pas confondre id qui est le champ dans la table et @id qui est un
> paramètre...
> "Don Juan" a écrit dans le message de groupe de > discussion : >> En efait, il n'a pas de ID 0, c'est pour cela qu'on l'utilise pour >> afficher tout le monde. >> maintenant, suppossant que le ID es 2 alors ton code dis: soit 2 ou 0 >> donc on verra le 2.
> Oui
>> maintenant, si le ID es 0 ton code dis: soit 0 ou 0 alors on affiche t ous >> les ID de 0 alors rien de tout.
> Non
> On aura id=0 ou 0=0 ce qui est vrai pour toute les lignes donc tout es les > lignes seront affichées.
> Ne pas confondre id qui est le champ dans la table et @id qui est un > paramètre...