我正在沿着不利的设计路线进行编程。我对架构没有影响,因为它属于现成的标准软件。
为简单起见,假设该软件存储多个用户的地址簿。每个表都分配有相应用户的名称。
这些表是这样创建的:
CREATE TABLE
NAME_OF_USER
(
SURNAME VARCHAR(100),
TOWN VARCHAR(100)
)
Run Code Online (Sandbox Code Playgroud)
所以所有表都有这些列:
存在相当于两个地址簿的两个表:
通讯录已经填写如下:
INSERT
INTO
DONALDDUCK
(
SURNAME,
TOWN
)
VALUES
(
'Dagobert Duck',
'Entenhausen'
)
Run Code Online (Sandbox Code Playgroud)
为了检索我可以运行的完整地址列表
Select * from donaldduck
Select * from daisyduck
Run Code Online (Sandbox Code Playgroud)
但是如果有人为 GOOFY 添加地址簿怎么办?我将不得不更改每个新创建的地址簿的查询,在本例中添加 aSELECT * FROM GOOFY
作为第三行。
为了使这更加复杂,还有其他具有不同设置的表(它们正在存储其他信息,这些信息与我列出给定地址簿中的所有条目的任务完全无关)。所以我不能简单地遍历所有现有的表,因为这会导致处理我在查询中不需要的表。
有没有办法说“从包含名为城镇的列的所有表中选择 *”?这应该通过使用普通 SQL 或 PL/SQL 来解决,因为我想避免使用高级语言编写代码,就像我认为我需要遵循 jsapkota 的建议来做。