J'essaie d'écrire une méthode de recherche pour déterminer un message SMS à envoyer à un utilisateur basé sur quelques paramètres associés à l'utilisateur/système. Nous aurons un message par défaut qui sera utilisé en dernier recours, mais il existe plusieurs façons de remplacer le message par divers paramètres. Voici ce que j'ai jusqu'à présent pour la requête de recherche - y at-il de meilleurs moyens de le faire? Peut-être qu'une recherche n'est pas la bonne approche pour cela?Table de recherche peu peuplée dans SQL
Voici la table de recherche:
MessageLookup
{
ID bigint PK
Key varchar
CampaignTypeID bigint FK,
ServiceProviderID bigint FK nullable, -- optional override parameter
DistributorID bigint FK nullable, -- optional override parameter
CampaignID bigint FK nullable, -- optional override parameter
Message varchar
}
Voici un exemple de ce que la table ressemblerait à ceci:
ID Key CTID SPID DistID CampID Message
1 Help 1 NULL NULL NULL 'This is the default message'
2 Help 1 375 NULL NULL 'This is the SP375 message'
3 Help 1 377 NULL NULL 'This is the SP377 message'
4 Help 1 NULL 13 NULL 'This is the Dist13 message'
5 Help 1 375 13 NULL 'This is the SP375/Dist13 message'
6 Help 1 NULL 13 500 'This is the Dist13/Camp500 message'
7 Help 1 375 13 500 'This is the SP375/Dist13/Camp500 msg'
8 Help 1 NULL NULL 500 'This is the Camp500 help message'
Voici la requête que j'ai:
select
--top 1
*
from MessageLookup ml
where ml.[Key] = @Key
and ml.CampaignTypeID = @CampaignTypeID
and
(
ml.ServiceProviderID = @ServiceProviderID or
ml.ServiceProviderID is null
)
and
(
ml.DistributorID = @DistributorID or
ml.DistributorID is null
)
and
(
ml.CampaignID = @CampaignID or
ml.CampaignID is null
)
order by
CampaignID desc, -- highest precedence lookup param
DistributorID desc,
ServiceProviderID desc -- lowest precedence lookup param
La colonne Règle est intéressante. Il pourrait fournir des moyens d'étendre la recherche dans le futur (en quelque sorte ...) Merci pour la réponse –