Поиск, существует ли значение в любой таблице - PullRequest
0 голосов
/ 08 марта 2020

У меня есть две таблицы, tblONE и tblTWO. Чтобы узнать, существует ли значение, сохраненное в Object.Name, в любом из них. Я пробовал следующую команду:

            SQLCmd.CommandText = "SELECT Count(ID) FROM tblONE WHERE ID = '" & Object.Name & "' UNION ALL SELECT Count(ID) FROM tblTWO WHERE ID = '" & Object.Name & "'"

Однако, кажется, только первый SELECT выполняется.

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Альтернативой будет

'Any of them contains the record?

SELECT
    count(*)
FROM
    tblONE left join tblTwo on tblOne.Id = tblTwo.Id ' or just tblOne, tblTwo
Where
    tblOne.Id = @id OR tblTwo.Id =@id;



'Which tale contains the Id?

Select
   T.fromTable
From
(
    SELECT Id, "Table1" as fromTable FROM tblONE Where tblOne.Id = @id;
    UNION ALL
    SELECT Id, "Table2" as fromTable FROM tblTwo Where tblTwo.Id = @id;
) T ' if both tables has the row, you get multiple rows.
0 голосов
/ 08 марта 2020

Вот один из методов. Сначала проверяется в tblONE, а затем в tblTWO:

SELECT IIF(Count(*) > 0, 1,
           (SELECT COUNT(*) FROM tblTWO WHERE ID = @ID) 
          )   
FROM tblONE
WHERE ID = @ID;

или другой альтернативе:

select iif(t1.cnt1 + t2.cnt2 > 0, 1, 0) as is present
from (select count(*) as cnt1
      from tblONE
      where id = @id
     ) as t1,  -- have to use , because MS Access does not support CROSS JOIN
     (select count(*) as cnt2
      from tblTWO
      where id = @id
     ) as t2
...