gpt4 book ai didi

sql - 做一个双重用途的查询,还是两个单独的查询?

转载 作者:行者123 更新时间:2023-12-01 09:38:36 25 4
gpt4 key购买 nike

这是一个人为的例子,但考虑这样一个场景:员工有工作地点,而员工的经理也有工作地点:

create table WorkingLocation (
ID int not null primary key identity(1,1),
Name varchar(50)
)

create table Employee (
ID int not null primary key identity(1,1),
Name varchar(50),
WorkingLocationID int null,
ManagerID int null,
constraint FK_Employee_WorkingLocation foreign key (WorkingLocationID) references WorkingLocation (ID),
constraint FK_Employee_Manager foreign key (ManagerID) references Employee (ID)
)

现在考虑一个需要员工的 WorkingLocation 的业务规则,但如果他没有经理的 WorkingLocation,则将满足于他的经理的 WorkingLocation。此时你有两个选择:

1:有一个同时获取两者的查询并让业务规则决定使用哪个:

select 
e.*,
emp_location.*,
mgr_location.*
from Employee e
left join WorkingLocation emp_location on e.WorkingLocationID = emp_location.ID
left join Employee mgr on e.ManagerID = mgr.ID
left join WorkingLocation mgr_location on mgr.WorkingLocationID = mgr_location.ID
where e.ID = @id

2:如果员工没有设置WorkingLocation,则单独调用数据库以检索经理的详细信息。

你更喜欢哪个,为什么?

最佳答案

还有另一个选项 - 在 T-SQL 查询中使用 COALESCE 指定规则或使用 null-coalescing 运算符??在您的代码中(也适用于 LinqToSQL)。

其中任何一个都只需要一次调用数据库,因此选项 1 是 +1。

关于sql - 做一个双重用途的查询,还是两个单独的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com