A partir de una tabla (su nombre), sus campos clave (nombres) y valores para
esos campos clave( que identificarían un registro) se quiere acceder a todas
las tablas relacionadas, directa o indirectamente, en relación 1 a muchos.
Obtendríamos un árbol de dependencias, y así se podría recorrer en amplitud.
Como veis en el ER-WIN, a partir de la tabla GCL_MSTR_PRESUPUESTO tendríamos
esta estructura:
GCL_MSTR_PRESUPUESTO
GCL_VERS_PRESUPUESTO
GCL_CONCEP_PRES
GCL_INFO_EXT_PRESUP
CGL_LINE_PRESUP
GCL_CONCEP_LINE
GCL_INFO_EXT_LINE_PRESUP
GCL_APARATO
GCL_CLI_PRESUP
GCL_INFO_EXT_CLI_PRESUP
GCL_ST_CLI_PRESUP
Digamos que a partir de una tabla, miro la relación y voy pasando a la tabla
que tiene el “punto”.
Hay que acceder al schema y ver las dependencias de cada tabla, podéis
orientarme para poder conseguir si una tabla se relaciona 1 a muchos con ora
tabla. Obtener las primary keys ya sé, también tendría que saber acceder a
las FK de una tabla - sabiendo que hay varios niveles de relación-
Encontré este script, gracias a S.Ramos, pero sólo me fu nciona con las
tablas de primer nivel, GCL_MSTR_PRESUPUESTO si me funciona pero para las
otras no.
SELECT s_1.name AS FK_Name, ccu.COLUMN_NAME AS Column_Name, s_2.name AS
Detail_Name, s_3.name AS Header_Name,
sc.colid AS Position
FROM sysobjects s_1 INNER JOIN sysreferences r ON s_1.id = r.constid
INNER JOIN sysobjects s_2 ON s_2.id = r.fkeyid
INNER JOIN sysobjects s_3 ON s_3.id = r.rkeyid
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu ON
ccu.CONSTRAINT_NAME = s_1.name
INNER JOIN syscolumns sc ON sc.name = ccu.COLUMN_NAME AND sc.id = s_2.id
Un saludo y perdón por las molestías.
PD: Les puedo enviar parte del modelo de datos si les aclara mejor
relaciones entre tablas
Leer las respuestas