Mam dwa stoły, tblONE i tblTWO. Chcę sprawdzić, czy wartość przechowywana w Object.Name
istnieje w którymkolwiek z nich. Wypróbowałem następujące polecenie:
SQLCmd.CommandText = "SELECT Count(ID) FROM tblONE WHERE ID = '" & Object.Name & "' UNION ALL SELECT Count(ID) FROM tblTWO WHERE ID = '" & Object.Name & "'"
Jednak wydaje się, że wykonywany jest tylko pierwszy SELECT.
2 odpowiedzi
Alternatywą byłoby
'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.
Oto jedna metoda. Najpierw sprawdza w tblONE
, a następnie w tblTWO
:
SELECT IIF(Count(*) > 0, 1,
(SELECT COUNT(*) FROM tblTWO WHERE ID = @ID)
)
FROM tblONE
WHERE ID = @ID;
Lub inna alternatywa:
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
Podobne pytania
Nowe pytania
sql
Structured Query Language (SQL) to język służący do wykonywania zapytań w bazach danych. Pytania powinny zawierać przykłady kodu, strukturę tabeli, przykładowe dane i znacznik używanej implementacji DBMS (np. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 itp.). Jeśli Twoje pytanie dotyczy wyłącznie konkretnego DBMS (używa określonych rozszerzeń / funkcji), użyj zamiast tego tagu tego DBMS. Odpowiedzi na pytania oznaczone tagiem SQL powinny używać standardu SQL ISO / IEC.