Ho una tabella degli eventi che ha un campo autore e un campo relatore. Una persona dalla mia tabella personale può essere sia un autore che un presentatore dello stesso evento o possono essere il presentatore o l'autore. Ho bisogno di applicare filtri al set di risultati in base all'ID della persona e al tipo o al filtro che hanno selezionato. I filtri che ho sono:Istruzione SQL Select Dove
Tutti: restituisce tutti i record in cui sono o un autore o un presentatore.
AllPresenter: tutti i record come presentatore.
AllAutore: tutti i record come autore.
PresenterSolo: registra solo come presentatore e non autore.
AuthorOnly: registra solo come autore e non presentatore.
PresenterAndAuthorOnly: tutti i record in cui sono il presentatore e l'autore.
Attualmente ho un proc memorizzato che utilizza ifs esterni come quello di seguito e ho cercato di trovare un modo per combinare tutte queste istruzioni select simili in uno. Non ho avuto molta fortuna a trovare una soluzione migliore e mi chiedo se mi manca una tecnica.
If (@filter = 'PandAOnly' or @filter = 'AllP' or @filter = 'AllA')
begin
Select * from Event
Where
PresenterId = Case @personId is null then PresenterId else @personId end
and
AuthorId = Case @personId is null then AuthorId else @personId end
end
else if (@filter = 'All')
begin
Select * from Event
Where
PresenterId = @personId
Or
AuthorId = @personId
end
else if (@fitler = 'POnly')
begin
Select * from Event
Where
PresenterId = @personId
and
AuthorId <> @personId
end
else
begin
Select * from Event
Where
AuthorId = @personId
and
PresenterId <> @personId
end