2015-12-04 2 views
0

В хранимой процедуре, приведенной ниже, я хочу вернуть строки, которые не имеют DEL в столбце Flag. Когда я получаю результат назад, строки DEL включены. Что я делаю неправильно в своей статье WHERE (я предполагаю, что это так)?Множественное условие WHERE, возвращающее ненужные строки

ALTER PROCEDURE [dbo].[GetAllMessages] 
-- Add the parameters for the stored procedure here 
@Key varchar(30) 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT message.msg_id, 
     message.tenant_id, 
     message.sender_id, 
     message.recipient_id, 
     message.recipient_email, 
     message.description, 
     message.date_recorded, 
     message.filename, 
     message.size_bytes, 
     message.size_time, 
     message.filepath, 
     message.Flag, 
     message.title, 
     message.date_activity, 
     member.member_image_url 
FROM message 
INNER JOIN member 
ON message.sender_id = member.person_id 
WHERE sender_id = (SELECT person_id FROM auth_key WHERE key = @Key) 
OR recipient_id = (SELECT person_id FROM auth_key WHERE key = @Key) 
AND Flag != 'DEL' 
END 

ответ

0

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

WHERE (sender_id = (SELECT person_id FROM auth_key WHERE key = @Key) 
OR recipient_id = (SELECT person_id FROM auth_key WHERE key = @Key)) 
AND Flag != 'DEL'