как выбрать то, что СОДЕРЖИТ, вместо выбора ТОЛЬКО ЧТО РАВНО в предложении WHERE? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть хранимая процедура, которая заполняет таблицу в моем средстве просмотра отчетов, которая выглядит следующим образом:

╔════════╦═══════════╗
║ SALES  ║ PRODUCTS  ║
╠════════╬═══════════╣
║ sale 1 ║ Product A ║
║        ║ Product B ║
║        ║ Product C ║
╠════════╬═══════════╣
║ sale 2 ║ Product D ║
║        ║ Product A ║
║        ║ Product F ║
╠════════╬═══════════╣
║ sale 3 ║ Product B ║
║        ║ Product G ║
║        ║ Product C ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝

Мне нужно отфильтровать продажи, я хочу показать только продажи, у которых есть c продукт, например: если я хочу видеть только продажи, которые имеют Product A, это должен был бы быть следующий результат:

╔════════╦═══════════╗
║ SALES  ║ PRODUCTS  ║
╠════════╬═══════════╣
║ sale 1 ║ Product A ║
║        ║ Product B ║
║        ║ Product C ║
╠════════╬═══════════╣
║ sale 2 ║ Product D ║
║        ║ Product A ║
║        ║ Product F ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝

Но фильтр, который я имею, возвращает это мне:

╔════════╦═══════════╗
║ SALES  ║ PRODUCTS  ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝

это мой фильтр:

SELECT cabecalho.ID, cabecalho.NaturezaOperacao, cabecalho.DataEmissao, cabecalho.ValorTotal, NFI.ID_NF, PS.ProductName, NFI.Quantidade, NFI.ValorUnitario
FROM(
SELECT NF.ID, NF.NaturezaOperacao, NF.DataEmissao, NF.ValorTotal
FROM NotaFiscal NF INNER JOIN
    Venda V
ON NF.ID_Venda = V.ID INNER JOIN
    Usuario U 
ON V.ID_UsuarioComissao1 = U.ID
WHERE
    ((U.Descricao = @usuario) OR (@usuario IS NULL)) AND
    (NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida)) cabecalho 


                      ======== ANOTHER JOINS =========        

WHERE
    ((U.Descricao = @usuario) OR (@usuario IS NULL)) AND
    (NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida) AND
    ((PS.ProductName LIKE '%' + @product + '%') OR (@product IS NULL))
ORDER BY 
    CASE WHEN @ordem = 'value' THEN cabecalho.ValorTotal END DESC,
    CASE WHEN @ordem = 'date' THEN cabecalho.DataEmissao END DESC

Как мне это исправить ??

...