The tables referenced by this query in particular are SYS.SYSTABLES, SYS.SYSSCHEMAS, SYS.SYSCONSTRAINTS, SYS.SYSFOREIGNKEYS, SYS.SYSCONGLOMERATES, SYS.SYSCOLUMNS, SYS.SYSKEYS.

I'm not sure what you need, but I'll try to give an idea of the relationships between these tables.

SYSTABLES has one row for each table in the database. Its primary key is TABLEID, which contains system-generated values. The SCHEMAID is a foreign key column, which references SYSSCHEMAS.

SYSSCHEMAS has one row for each schema in the database. Its primary key is SCHEMAID.

SYSCOLUMNS has one row for each column of every table in the database. Its primary key is (REFERENCEID, COLUMNNUMBER). REFERENCEID is also a foreign key, which refers to TABLEID in SYSTABLES.

SYSCONSTRAINTS has one row for each constraint in the database (primary, unique, foreign and check constraints). Its primary key is CONSTRAINTID, which is a system-generated value. The TABLEID column is a foreign key referring to SYSTABLES.TABLEID. The SCHEMAID column is a foreign key referring to SYSSCHEMAS.SCHEMAID.

SYSCONGLOMERATES has one row for each heap (base table) and index in the database. Its primary key is CONGLOMERATEID, which is a system-generated value. The TABLEID column is a foreign key referring to SYSTABLES.TABLEID. The SCHEMAID column is a foreign key referring to SYSSCHEMAS.SCHEMAID. The ISCONSTRAINT column tells whether the row represents the backing index for a primary key, foreign key or unique constraint.

SYSKEYS has one row for each primary key or unique constraint in the database. Its primary key is CONSTRAINTID, which is also a foreign key to SYSCONSTRAINTS.CONSTRAINTID. The CONGLOMERATEID column is a foreign key referring to SYSCONGLOMERATES.CONGLOMERATEID.

SYSFOREIGNKEYS has one row for each foreign key in the database. Its primary key is (CONSTRAINTID, KEYCONSTRAINTID). The CONSTRAINTID column is a foreign key refererring to SYSCONSTRAINTS.CONSTRAINTID, and it contains the constraint id of the foreign key itself. The KEYCONSTRAINTID is a foreign key referring to SYSCONSTRAINTS.CONSTRAINTID, and it contains the constraint id of the primary key that the foreign key refers to. The CONGLOMERATEID column is a foreign key that refers to SYSCONGLOMERATES.CONGLOMERATEID, and it contains the id of the backing index for the foreign key.

By the way, last night I did a manual run-through of the query with Mamta's example, and I didn't find anything wrong. I would suggest to anyone working on this problem to work from the outside in - figure out the results of the two table subqueries (FKTB and FKINFO) before looking at the outer query.

It's possible that the bug isn't in the query itself. That is, the bug could be in query compilation or execution. It might be a good idea to compare the query plans and runtime statistics for Derby and Cloudscape 5.1.60 (since Kathey says it works in Cloudscape).


                       -        Jeff Lichtman
                                [EMAIL PROTECTED]
                                Check out Swazoo Koolak's Web Jukebox at
http://swazoo.com/

Reply via email to