1

我有多个表,表名分别为TableA(主键列:ID1)、TableB(主键列:ID2)、TableC(主键列:ID3)。

CREATE TABLE TableA(
   ID1         INTEGER  NOT NULL PRIMARY KEY 
  ,TableA_Name VARCHAR(14) NOT NULL
  ,TableA_Desc VARCHAR(27) NOT NULL
);

INSERT INTO TableA(ID1,TableA_Name,TableA_Desc) VALUES (1,'TableA Parent1','This is TableA description1');
INSERT INTO TableA(ID1,TableA_Name,TableA_Desc) VALUES (2,'TableA Parent2','This is TableA description2');
INSERT INTO TableA(ID1,TableA_Name,TableA_Desc) VALUES (3,'TableA Parent3','This is TableA description3');

CREATE TABLE TableB(
   ID2         INTEGER  NOT NULL PRIMARY KEY 
  ,TableB_Name VARCHAR(11) NOT NULL
  ,TableB_Desc VARCHAR(27) NOT NULL
);

INSERT INTO TableB(ID2,TableB_Name,TableB_Desc) VALUES (1,'TableB Kid1','This is TableB description1');
INSERT INTO TableB(ID2,TableB_Name,TableB_Desc) VALUES (2,'TableB Kid2','This is TableB description2');
INSERT INTO TableB(ID2,TableB_Name,TableB_Desc) VALUES (3,'TableB Kid3','This is TableB description3');

CREATE TABLE TableC(
   ID3         INTEGER  NOT NULL PRIMARY KEY 
  ,TableC_Name VARCHAR(11) NOT NULL
  ,TableC_Desc VARCHAR(27) NOT NULL
);

INSERT INTO TableC(ID3,TableC_Name,TableC_Desc) VALUES (1,'TableC kid1','This is TableC description1');
INSERT INTO TableC(ID3,TableC_Name,TableC_Desc) VALUES (2,'TableC kid2','This is TableC description2');
INSERT INTO TableC(ID3,TableC_Name,TableC_Desc) VALUES (3,'TableC Kid3','This is TableC description3');
INSERT INTO TableC(ID3,TableC_Name,TableC_Desc) VALUES (4,'TableC Kid3','This is TableC description4');

我有名为Hierarchy_Table的层次结构表。

CREATE TABLE Hierarchy_Table(
   Table_Name         VARCHAR(6) NOT NULL PRIMARY KEY
  ,PK_Column          VARCHAR(3) NOT NULL
  ,Selected_ID        INTEGER  NOT NULL
  ,Hierarchy_Level    INTEGER  NOT NULL
  ,Parent_Table       VARCHAR(6)
  ,Parent_Column      VARCHAR(4)
  ,Selected_Parent_ID INTEGER 
);


INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableA','ID1',1,1,NULL,NULL,NULL);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableB','ID2',1,2,'TableA','ID1',1);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableC','ID3',1,3,'TableB','ID2',1);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableC','ID3',2,3,'TableB','ID2',1);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableB','ID2',2,2,'TableA','ID1',1);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableC','ID3',3,3,'TableB','ID2',2);
INSERT INTO Hierarchy_Table(Table_Name,PK_Column,Selected_ID,Hierarchy_Level,Parent_Table,Parent_Column,Selected_Parent_ID) VALUES ('TableC','ID3',4,3,'TableB','ID2',2);

我需要根据 Table_Name、PK_Column 和 Selected_ID 以及 Parent_Table、Parent_Column 和 Selected_Parent_ID 遍历上述 Hierarchy_Table 结果集的每一行,我需要从表 TableA、TableB 和 TableC 中获取所有列及其值。

我的 SQL 查询应该是什么样子?我想要的结果集应包含 Selected_ID、TableA_Name、TableA_Desc、TableB_Name、TableB_Desc、TableC_Name、TableC_Desc、Selected_Parent_ID、Parent_Name、Parent_Desc 列。

注意:TableA、TableB、TableC 列可以增长,因此我需要在新结果中从这些表中获取所有列和值。

我真的很感激一些帮助。提前谢谢。

4

0 回答 0