Как использовать XOR-подобную функцию в SQL - PullRequest
0 голосов
/ 31 января 2011

Я не могу понять, что такое sql, чтобы удовлетворить мои потребности в этом вопросе.Пока у меня есть:

select * from customformresponses
INNER JOIN exhibitors ON
Exhibitors.ExhibitorId= customformresponses.ExhibitorId
WHERE customformresponses.exhibitorid='8179cde9-b922-430a-9024-bd4cb8b3d05c'
  and exhibitors.exhibitionID = 'e641a3d4-cb57-4f67-86a1-5c2f4c3cf6e0'
  and customformresponses.FormID = 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26' 

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

customformresponses.FormID = 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26'  or
customformresponses.FormID = 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26' or
customformresponses.FormID = 'e69cee39-2519-434d-be3e-516ba156b444'

Тогда он возвращает только результатыпервого истинного условия, а не любого из истинных условий.

Как вы возвращаете все результаты из строк, соответствующих этому критерию?

Ответы [ 3 ]

1 голос
/ 31 января 2011

Я думаю, что это то, что вам нужно после

select *
from customformresponses
INNER JOIN exhibitors
    ON Exhibitors.ExhibitorId= customformresponses.ExhibitorId
WHERE customformresponses.exhibitorid='8179cde9-b922-430a-9024-bd4cb8b3d05c'
AND exhibitors.exhibitionID = 'e641a3d4-cb57-4f67-86a1-5c2f4c3cf6e0'
AND
( customformresponses.FormID = 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26'
  OR
  customformresponses.FormID = 'e69cee39-2519-434d-be3e-516ba156b444')

Это потребует сопоставления экспонента и выставки, но для FormID оно будет соответствовать любому из двух.

Так что если выиметь две строки

exhibitorid      | exhibitionid     | formid
8179cde9-b922... | c7f5f0de-35f8... | c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26
8179cde9-b922... | c7f5f0de-35f8... | e69cee39-2519-434d-be3e-516ba156b444

Они оба будут в выходном наборе результатов

0 голосов
/ 31 января 2011
select * from customformresponses 
INNER JOIN exhibitors     
ON Exhibitors.ExhibitorId= customformresponses.ExhibitorId 
WHERE customformresponses.exhibitorid='8179cde9-b922-430a-9024-bd4cb8b3d05c' 
AND exhibitors.exhibitionID = 'e641a3d4-cb57-4f67-86a1-5c2f4c3cf6e0' 
AND ormresponses.FormID IN  ( 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26', 'e69cee39-2519-434d-be3e-516ba156b444') 
0 голосов
/ 31 января 2011

Чтобы избежать повторения идентификаторов GUID и имен столбцов ...

SELECT *
FROM customformresponses
  INNER JOIN exhibitors ON Exhibitors.ExhibitorId = customformresponses.ExhibitorId
WHERE (
  CASE customformresponses.exhibitorid WHEN '8179cde9-b922-430a-9024-bd4cb8b3d05c' THEN 1 ELSE 0 END +
  CASE exhibitors.exhibitionID WHEN 'e641a3d4-cb57-4f67-86a1-5c2f4c3cf6e0' THEN 1 ELSE 0 END +
  CASE customformresponses.FormID WHEN 'c7f5f0de-35f8-412d-9c91-eaf8bb1a3c26' THEN 1 ELSE 0 END
) = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...