【问题标题】:Filter data from intermediate table with AND link使用 AND 链接从中间表中过滤数据
【发布时间】:2010-08-28 11:30:11
【问题描述】:

我有以下场景:

表和列(数据库类型:Microsoft Sql Server 2005):

表格:条目

  • 条目ID
  • ... 其他不重要的列

表格:属性

  • 属性ID

表:EntryAttributes

  • EntryID [关系到:Entries->EntryID]
  • AttributeID [关系到:Attributes->AttributeID]

那么,我如何才能只选择包含多个属性的条目,如以下 SQL 语句(该语句不适用于 AND 链接):

SELECT *
FROM  [Entries] AS [t0]
INNER JOIN [EntryAttributes] AS [t1] ON [t0].[EntryID] = [t1].[EntryID]
WHERE ([t1].[AttributeID] = 1) AND ([t1].[AttributeID] = 1)

如何构建正确的 SQL 语句?我敢肯定,某处已经有解决方案,但我不知道应该使用哪些关键字来搜索该问题。

我使用“Linq to Entites”,所以也许有一个简单的 Linq 表达式。

感谢您阅读我的帖子!

最好的问候!

【问题讨论】:

  • 你有WHERE ([t1].[AttributeID] = 1) AND ([t1].[AttributeID] = 1) 这是一个错误吗? SQL 答案对您也有好处吗?还是需要 Linq 答案?
  • 嗨,我会用清晰的 SQL 测试我的语句,但最后我需要一个 Linq(到实体)解决方案。当然,“where”部分只是“伪代码”,不会起作用。

标签: sql-server-2005 linq-to-entities model-associations


【解决方案1】:

这种情况的解决方案是加入我要选择的每个 [AttributeID]:

SELECT * 
FROM  [Entries] AS [t0] 
INNER JOIN [EntryAttributes] AS [t1] ON [t0].[EntryID] = [t1].[EntryID] 
INNER JOIN [EntryAttributes] AS [t2] ON [t0].[EntryID] = [t2].[EntryID] 
WHERE ([t1].[AttributeID] = 1) AND ([t2].[AttributeID] = 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-17
    • 2021-05-15
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2016-05-20
    相关资源
    最近更新 更多