获得"复制"值

时间:2018-05-29 10:54:38

标签: sql

所以我有两个表:Agent和Conta。

代理可以有很多Conta,但一个Conta只能有一个代理。

我想只显示代理,创建一个html表,在那里你可以看到数据库中存在的所有代理 - 在后台!

我使用下面的代码,但我得到的结果是他参与的每个联系人的一个代理人条目。

WITH LAST_COUNT AS
   (SELECT {Conta}.[AgentId], {Conta}.[Data], {Conta}.[Valor],{Conta}.[Submit] 
    FROM {Conta})
SELECT
   {Agent}.[Id], {Agent}.[Nome], {Agent}.[Apelido], LAST_COUNT.[Data],
   LAST_COUNT.[Valor], LAST_COUNT.[Submit], {AgentPicture}.[Id],
   {AgentPicture}.[Filename], {Agent}.[Telemovel], {Agent}.[UserId]
FROM {Agent}
   LEFT JOIN {AgentPicture} ON {AgentPicture}.[Id] = {Agent}.[Id]
   INNER JOIN LAST_COUNT ON LAST_COUNT.[AgentId] = {Agent}.[Id]
WHERE {Agent}.[Id] LIKE '%' + @SearchFilter + '%'
   OR {Agent}.[Nome] LIKE '%' + @SearchFilter + '%'
   OR {Agent}.[Apelido] LIKE '%' + @SearchFilter + '%'
   OR @SearchFilter = ''
你能帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在您的查询中,您将使用LAST_COUNT公用表表达式(CTE)加入Agent表。因此,您可以在结果中获得Contra的所有记录。

只需删除

WITH LAST_COUNT AS
   (SELECT {Conta}.[AgentId], {Conta}.[Data], {Conta}.[Valor],{Conta}.[Submit] 
FROM {Conta})
从您的查询

并删除最后一个JOIN语句:LEFT JOIN LAST_COUNT ON LAST_COUNT.[AgentId] = {Agent}.[Id] 另外,不要忘记删除以下列,这些列是从LAST_COUNT表中检索的:

 LAST_COUNT.[Data],
   LAST_COUNT.[Valor], LAST_COUNT.[Submit],