【发布时间】:2018-09-16 15:06:39
【问题描述】:
我有以下表格:客户和商店。 他们有以下列:
客户:ID、姓名、姓氏、电子邮件
商店:ID、名称、ClientId
ClientId 是表 Client 的外键。
我需要根据姓名 AND surname OR Email 进行搜索,如果 Shop 表中有任何条目,则返回它 但不应返回作为参数传递的 Id。
我尝试过如下使用左连接,但这不起作用:
select *
from Client c
left join Shop s
on c.Id = s.ClientId
where c.Name = 'abc'
and c.Surname = 'xyx'
and c.Id != Id
or c.Email = 'ab@cde.com'
and c.Id != Id
但这并没有返回正确的数据。
例如,我想用电子邮件搜索名字 Jon 和姓 Sam
jon@samy.com 和 clientId = 201。
因此,该请求应返回我所有名为 Jon 和姓 Sam 的客户或电子邮件 jon@samy.com
如果表 Shop 中有任何包含这些详细信息的条目,请将其返回,但不包括 ID 为 201 的客户。
我也想将此 SQL 转换为 LinQ。
知道我的请求有什么问题吗?
【问题讨论】:
-
为什么
Shop有ClientId?这意味着一个客户有 0..n 个商店,而一个商店只有 1 个客户。我希望这种关系是多对多的,即使用联结表。 -
样本数据和期望的结果真的很有帮助。
-
也许我的SQL to LINQ Recipe 可以帮助你。
标签: sql sql-server linq