Consulta SQL

13/01/2006 - 16:32 por anonimo | Informe spam
Espero puedan ayudarme con esto
En un página permito a empresas realizar busquedas de personas deacuerdo a
varios criterios, esta consulta la tengo implementada muy bien, estas
empresas cuentan con carpetas virtuales en donde pueden almacenar los
registros de estas personas buscadas.
Entonces como añadido al resultado de la búsqueda quiero mostrarle que
personas del resultado ya estan en sus carpetas.
La estructura de las tablas es:
Carpeta Empresa Bodega Persona

CodCarpeta CodEmpresa CodBodega Codpersona
CodEmpresa CodCarpeta
CodPersona

La tabla carpeta almacena el listado de todas las carpetas con las que
cuenta la empresa, la tabla bodega almacena que personas dentro de que
carpetas se encuentran.

Yo hice una consulta, pero vi el plan de ejecucion y me parece que no es el
mas optimo, aqui les muestro la consulta que hace la busqueda de personas,
esta consutla esta sin criterios de busqueda, solo relacionando con el tema
de carpeta:
SELECT DISTINCT(P.codpersona) AS codpersona, nompersona, count(bcv.codpersona)
FROM persona P
left outer join
(
select codpersona
from bodega bcv
left outer join carpeta c on bcv.codcarpeta=c.codcarpeta
where codempresa='26'
) as bcv
on bcv.codpersona=p.codpersona
group by P.codpersona, nompersona
ORDER BY fecha_registro ASC, codpersona ASC

La idea es ver la forma de contar solo en las carpetas que le pertencen a la
empresa (en el ejemplo de codigo 26), pero sin restringir el resultado a las
personas que se encuentren en sus carpetas.

Espero puedan ayudarme.
Gracias.

Preguntas similare

Leer las respuestas

#1 Leonard
14/01/2006 - 14:28 | Informe spam
espero qeu esto te ayude un poco y sea loq ue necesitabas...
suerte.

SELECT
e.nomempresa,c.nomcarpeta,p.codpersona,p.nompersona,count(p.codpersona)
FROM
empresa e LEFT OUTER JOIN carpeta c ON (c.codempresa=e.codempresa)
LEFT OUTER JOIN bodega b ON (b.codcarpeta=c.codcarpeta)
LEFT OUTER JOIN persona p ON (p.codpersona=b.codpersona)
GROUP BY
e.nomempresa,c.nomcarpeta,p.codpersona,p.nompersona





Manuel Aparcana Reyes
Analisista Programador
(511) 9503-4295

"anonimo" escribió en el mensaje
news:
Espero puedan ayudarme con esto
En un página permito a empresas realizar busquedas de personas deacuerdo a
varios criterios, esta consulta la tengo implementada muy bien, estas
empresas cuentan con carpetas virtuales en donde pueden almacenar los
registros de estas personas buscadas.
Entonces como añadido al resultado de la búsqueda quiero mostrarle que
personas del resultado ya estan en sus carpetas.
La estructura de las tablas es:
Carpeta Empresa Bodega


Persona
-


-

CodCarpeta CodEmpresa CodBodega Codpersona
CodEmpresa CodCarpeta
CodPersona

La tabla carpeta almacena el listado de todas las carpetas con las que
cuenta la empresa, la tabla bodega almacena que personas dentro de que
carpetas se encuentran.

Yo hice una consulta, pero vi el plan de ejecucion y me parece que no es


el
mas optimo, aqui les muestro la consulta que hace la busqueda de personas,
esta consutla esta sin criterios de busqueda, solo relacionando con el


tema
de carpeta:
SELECT DISTINCT(P.codpersona) AS codpersona, nompersona,


count(bcv.codpersona)
FROM persona P
left outer join
(
select codpersona
from bodega bcv
left outer join carpeta c on bcv.codcarpeta=c.codcarpeta
where codempresa='26'
) as bcv
on bcv.codpersona=p.codpersona
group by P.codpersona, nompersona
ORDER BY fecha_registro ASC, codpersona ASC

La idea es ver la forma de contar solo en las carpetas que le pertencen a


la
empresa (en el ejemplo de codigo 26), pero sin restringir el resultado a


las
personas que se encuentren en sus carpetas.

Espero puedan ayudarme.
Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida