我的意思是,表A有5列。我有一个SP用于从表A中获取3列,从表B中获得一列。现在,将表B中的列添加到表A或使用该SP中的子查询来获取该列会更好吗?从表B?
答案 0 :(得分:0)
您的问题仍然令人困惑,看起来您似乎并不了解如何使用关系数据库。所以让我试着解释一下:
我们假设您有两张桌子:
<强>客户端强>
client_number first_name last_name date_of_birth ...
<强>顺序强>
order_number client_number order_date ...
这是两个单独的表,以便具有规范化的关系数据库。订单表包含客户端编号,因此您可以在客户端表中查找客户端名称和出生日期。出生日期可能很重要,以了解是否允许客户订购某些物品。但是,您不希望每个订单都存储出生日期 - 它不会发生变化。
如果您想查找可以使用子查询的年龄:
select
order_number,
order_date,
quantity,
(
select date_of_birth
from client c
where c.client_number = o.client_number
)
from order o
where item = 'whisky';
但大多数情况下,您只需加入表:
select
o.order_number,
o.order_date,
o.quantity,
c.date_of_birth,
c.first_name,
c.last_name
from order o
join client c on c.client_number = o.client_number;
但是, 您设计数据库使其成为格式良好的关系数据库,而不是使您的最新查询易于编写。使用连接和子查询非常非常常见,并且必须使用它们通常表明您已经很好地构建了数据库。
我认为这是您查找数据库规范化的好时机,例如在维基百科https://en.wikipedia.org/wiki/Database_normalization。