Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/04/2012, 19:34
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Procedimiento almacenado en 3 tablas

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