Esto varía según el caso, puede ser eficiente leer las 3 tablas al mismo tiempo pero también leerlas por separado, suponiendo que buscas por el campo Nombre en depto_farmacia, depto_productos y depto_vinos, puedes:
1. Leerlas al mismo tiempo cuando los registros que cumplen con la condición del where pueden estar en cualquiera de las tablas.
Código:
create procedure p1
is
begin
select * from
(
select 'depto_farmacia' as tabla, nombre
from depto_farmacia
union all
select 'depto_productos' as tabla, nombre
from depto_productos
union all
select 'depto_vinos' as tabla, nombre
from depto_vinos
) t
where nombre like '%un_nombre%
end
go
2. Leerlas por separado cuando los registros que cumplen con la condición del where solo pueden estar en una de las tablas, por ejemplo, si el nombre "Aspirina" solo se encuentra en depto_farmacia ya no es necesario buscar en el resto de las tablas.
Código:
create procedure p1
is
begin
select 'depto_farmacia' as tabla, nombre
from depto_farmacia
where nombre like '%un_nombre%
if (@@rowcount = 0)
select 'depto_productos' as tabla, nombre
from depto_farmacia
where nombre like '%un_nombre%
if (@@rowcount = 0)
select 'depto_vinos' as tabla, nombre
from depto_farmacia
where nombre like '%un_nombre%
end
go
Saludos