SQL faut dire (le titre à deux balles)

Bonjour à tous mes amis les programmeurs de gestion.
J’ai un problème pour écrire une requête SQL, je vais essayer de faire simple.

J’ai deux tables, la table A et la table B.
La table A a une relation père-fils avec la table B, sachant que A est le fils, et B est le père.

J’ai un paramètre (appellons-le B.champsparam) à ma fonction qui correspond à un champs de la table B.

Ma requête correspond pour l’instant à
SELECT
A.champs1,
A.champs2
FROM
A,B
WHERE
A.idb# = B.idb

Le problème est que ‘la valeur en paramètre’ peut être nulle ou non.
Sachant que si ‘la valeur en paramètre’ est nulle, il me faut TOUS les enregistrements et que si 'la valeur en paramètre’n’est pas nulle, il me faut tous les enregistrements où B.champsparam = ‘la valeur en paramètre’, QUELLE CONDITION PUIS-JE UTILISER ?

En effet, le (AND B.champsparam = ‘la valeur en paramètre’), si il est nul ne me renverra aucune ligne, alors que je veux utiliser toutes les lignes.

Une solution ?

(c’est peut être une solution toute conne, mais j’arrive pas à voir laquelle, donc, please, help).

[edit : faute dans l’énonce…]

[Edité le 29/8/2002 par use-writer]

non je suis trop con… @param ne peut avoir qu’une seule valeur…trop bete…mea culpa

bon faut que je me reveille moi, j’ai de la prog a faire et cela commence mal…

Ca existe pas XOR en Sql. Mais la avec un OR ca marche nikel chrome comme on dit chez moi :cool:

[quote]c’est ce que je me demandais…est ce que cela existe en SQL ??[/quote]Le OR existe bien, mais l’opérateur XOR est dans la plupart (tous ?) les langages un opérateur sur bits, non ?

[quote]Donjohn : un XOR en sql ???[/quote] c’est ce que je me demandais…est ce que cela existe en SQL ??

A nouveau merci glop (sur irc et là maintenant)
Ca a l’air de bien fonctionner !

Donjohn : un XOR en sql ???

euhh c pas un XOR kil voulait ? je me demandais si cela fonctionne avec un XOR…

meme pas le temps de faire koike ce soit ici…pfff meme pas drole :wink:

[Edité le 30/8/2002 par Donjohn]

SELECT * FROM News, NewsComments WHERE News.NewsId=NewsComments.NewsId AND (@param IS NULL OR News.UserId=@param)

Je n’en espérais pas moins de toi, Le :wink:

Et puis un reply pour permettre à Donjohn de voir ça également. Je continue de chercher de mon côté !