problema con generador de vistas

09/07/2003 - 01:03 por Jorge Ortalli | Informe spam
Tengo que generar una vista desde tres vistas A, B y C con inner joins de la
siguiente forma:
on AID1 = B.ID1;
on B.ID2 = C.ID2 and B.ID3 = C.ID3 &&Este es un índice compuesto

el problema es que no puedo guardar cuando genero el join con los dos campos
entre la tabla B y la C. En un principio no genera correctamente la consulta
pues omite una de las tablas involucradas en los joins. Luego de cambiar el
orden de los joins y de los ANDs en el diseñador, logré una consulta que si
copio y la ejecuto en la ventana de comandos funciona correctamente, pero al
intentar guardar informa del siguiente error (***):
"Query Parse Error - try rebuilding in Query Wizard or by using View
Designer Join Tab"
La consulta con todos los datos tal cual la veo en la ventana de SQL, la
copio y la ejecuto sin problemas en la ventana de comandos es:

SELECT Vprotocolos.id_protocolo, Vprotocolos.fecha,;
Vprotocolos.id_medico, Vprotocolos.medico, Vprotocolos.id_hc,;
Vprotocolos.paciente, Vprotocolos.id_mutual, Vprotocolos.id_plan;
FROM icmv!vplangrupofac INNER JOIN icmv!vprotocolos;
INNER JOIN icmv!vmutperiodos ;
ON Vmutperiodos.id_mutual = Vplangrupofac.id_mutual ;
ON Vplangrupofac.id_mutual = Vprotocolos.id_mutual;
AND Vplangrupofac.id_plan = Vprotocolos.id_plan


Por otro lado, genero el join desde la parte superior del diseñador,
arrastrando los campos entre B y C, lo que hace es generar un join
adicional, que funciona, pero: ¿no está seleccionando la misma tabla dos
veces produciendo una pérdida en el desempeño? En este último caso el
generador genera:

SELECT Vprotocolos.id_protocolo, Vprotocolos.fecha,;
Vprotocolos.id_medico, Vprotocolos.medico, Vprotocolos.id_hc,;
Vprotocolos.paciente, Vprotocolos.id_mutual, Vprotocolos.id_plan;
FROM icmv!vplangrupofac INNER JOIN icmv!vprotocolos;
INNER JOIN icmv!vplangrupofac;
INNER JOIN icmv!vmutperiodos ;
ON Vmutperiodos.id_mutual = Vplangrupofac.id_mutual ;
ON Vplangrupofac.id_plan = Vprotocolos.id_plan ;
ON Vplangrupofac.id_mutual = Vprotocolos.id_mutual

es decir: la tabla vPlanGrupoFac está incluida dos veces en los joins!!

Otra alternativa que probé es generar la combinación "sobrante" entre
ID_Plan en la solapa de filtro. La genera perfectamente, pero no funciona!!!
Me quiero morir!!! (era un chiste, no es para tanto)

Agradezco a todo el que pueda aproximarme a una solución.

Jorge Ortalli
 

Leer las respuestas

#1 Jorge Ortalli
11/07/2003 - 16:09 | Informe spam
Hola. ¿Ni siquiera un "No tiene sentido lo que estás diciendo"?
Todavía estoy lidiando que esta consulta. No puedo armar la vista. Cuando
logro el código del select que funciona no lo puedo grabar porque el
diseñador informa de un error de parseo. HELP!
Jorge

"Jorge Ortalli" escribió en el mensaje
news:eF4$
Tengo que generar una vista desde tres vistas A, B y C con inner joins de


la
siguiente forma:
on AID1 = B.ID1;
on B.ID2 = C.ID2 and B.ID3 = C.ID3 &&Este es un índice compuesto

el problema es que no puedo guardar cuando genero el join con los dos


campos
entre la tabla B y la C. En un principio no genera correctamente la


consulta
pues omite una de las tablas involucradas en los joins. Luego de cambiar


el
orden de los joins y de los ANDs en el diseñador, logré una consulta que


si
copio y la ejecuto en la ventana de comandos funciona correctamente, pero


al
intentar guardar informa del siguiente error (***):
"Query Parse Error - try rebuilding in Query Wizard or by using View
Designer Join Tab"
La consulta con todos los datos tal cual la veo en la ventana de SQL, la
copio y la ejecuto sin problemas en la ventana de comandos es:

SELECT Vprotocolos.id_protocolo, Vprotocolos.fecha,;
Vprotocolos.id_medico, Vprotocolos.medico, Vprotocolos.id_hc,;
Vprotocolos.paciente, Vprotocolos.id_mutual, Vprotocolos.id_plan;
FROM icmv!vplangrupofac INNER JOIN icmv!vprotocolos;
INNER JOIN icmv!vmutperiodos ;
ON Vmutperiodos.id_mutual = Vplangrupofac.id_mutual ;
ON Vplangrupofac.id_mutual = Vprotocolos.id_mutual;
AND Vplangrupofac.id_plan = Vprotocolos.id_plan


Por otro lado, genero el join desde la parte superior del diseñador,
arrastrando los campos entre B y C, lo que hace es generar un join
adicional, que funciona, pero: ¿no está seleccionando la misma tabla dos
veces produciendo una pérdida en el desempeño? En este último caso el
generador genera:

SELECT Vprotocolos.id_protocolo, Vprotocolos.fecha,;
Vprotocolos.id_medico, Vprotocolos.medico, Vprotocolos.id_hc,;
Vprotocolos.paciente, Vprotocolos.id_mutual, Vprotocolos.id_plan;
FROM icmv!vplangrupofac INNER JOIN icmv!vprotocolos;
INNER JOIN icmv!vplangrupofac;
INNER JOIN icmv!vmutperiodos ;
ON Vmutperiodos.id_mutual = Vplangrupofac.id_mutual ;
ON Vplangrupofac.id_plan = Vprotocolos.id_plan ;
ON Vplangrupofac.id_mutual = Vprotocolos.id_mutual

es decir: la tabla vPlanGrupoFac está incluida dos veces en los joins!!

Otra alternativa que probé es generar la combinación "sobrante" entre
ID_Plan en la solapa de filtro. La genera perfectamente, pero no


funciona!!!
Me quiero morir!!! (era un chiste, no es para tanto)

Agradezco a todo el que pueda aproximarme a una solución.

Jorge Ortalli


Preguntas similares