【发布时间】:2021-02-15 12:36:52
【问题描述】:
我是 SQL/LINQ 的新手,真的可以使用您的帮助。
我有 3 张桌子:
邀请函表
| InviteId | Name | Email | SalesAgentId | |
|----------|----------|--------------|--------------|---|
| 9 | John Doe | john@doe.com | 1 | |
SalesAgent表
| SalesAgentId | UserId | Active |
|--------------|--------|--------------|
| 1 | 2 | true |
用户表
| UserId | Name | Email |
|--------|--------------------------------------|-----------------------------------|
| 2 | Sales Guy | sales@agent.com |
尝试生成给定 SalesAgent 的列表,该列表应包含该 SalesAgent 的信息以及销售代理已邀请的用户的信息(来自 Invitation 表)
目标: 尝试获取用户列表(来自 Invitation 表和 User 与 SalesAgent Id 绑定的表(用户是销售代理本人,或者用户是由销售代理邀请的)。
所以在这个场景中,目标是得到结果表(result)为:
ResultId:如果User表中有记录,则使用SalesAgentId,但如果记录来自 Invitation 表,然后将此列使用 InviteId。
姓名/电子邮件:相同的逻辑;如果记录在 User 表中,则使用 User 表中的 Name/Email,如果不是,则使用 Invitation 表中的信息。
InvitedUser:如果记录在User表中,那么这应该是false,但是如果它来自Invitation strong> 表,那么这应该是真的。
| ResultId | Name | Email | InvitedUser |
|----------|-----------|-----------------|-------------|
| 1 | Sales Guy | sales@agent.com | false |
| 9 | John Doe | john@doe.com | true |
我不确定在这种情况下哪种联接对我有帮助,我或多或少需要结合来自 2 个查询的结果(我认为)。最终目标是获得此选择的 linq 查询版本,但我认为 LINQ/EfCore 在使用不同的数据存储时不支持 Concat。
我非常感谢任何类型的帮助,或正确方向的指针;非常感谢。
【问题讨论】:
-
您想要一个特定代理的过滤列表,并且只有与该代理关联的受邀者?
-
应该可能提供更大的数据样本,包括用户也是被邀请者的情况。 John Doe 不是用户吗?您显示的输出看起来像 UNION 查询的结果。
标签: sql linq entity-framework-core left-join