Bonjour,
Je rencontre deux petits problèmes lors d'insert et de select.
Les problèmes ne se trouve pas vraiment dans la syntax de requête mais plutôt dans leur généricité.
1
Voici ma requête :
1 2 3 4 5 6 7 8 9 10
|
SELECT *
FROM (Badges b
LEFT JOIN Personnes p ON b.BaPersonne = p.PeId )
INNER JOIN Statut s ON s.StId = b.BaStId
WHERE b.BaId LIKE @idBadge AND
b.BaStId LIKE @BaStatut AND
p.PeNom LIKE @PeNom AND
p.pePrenom LIKE @PePrenom |
Le problème est que lorsque le paramètre (d'un champ) est "%", ce qui veut donc dire que je veux tous les tuples. Si la valeur est "null" le tuple ne sera pas sélectionné. Également si le badge n'est rattaché à aucune personne
Rajouter
p.PeNom LIKE @PeNom OR p.PeNom IS NULL
résoud le problème mais en pose un autre. Lors de select, il affichera toujours tout les tuples dont la valeur de PeNom est "null".
Question : Je cherche à résoudre ce problème sans écrire une multitude de requêtes différentes en fonction des paramètre, est ce possible ?
2
Je crée une requête de ce type
1 2 3 4 5 6 7 8 9 10
| INSERT INTO Badges
( BaStId, BaUserLoc,BaPersonne )
VALUES ( @idStatut, @userLoc,@idResp ) ;
DbParameter paramPersonne = cmd.CreateParameter();
paramPersonne.ParameterName = "@idResp";
paramPersonne.DbType = System.Data.DbType.Int32;
paramPersonne.Value = this.idPersonne;
(Le problème se poserait aussi dans un Update) |
Dans ma DB (Access), BaPersonne peut être "null" et est un entier.
Il se pourrait qu'on crée un badge avec aucun propriétaire et donc BaPersonne à "null".
Question : Serait t'il possible de donné une "valeur" à insérer qui ferait comme si on avait rien inséré ? Laissant la colonne BaPersonne à "blanc".
Un grand merci d'avance pour votre lecture :p
Partager