- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个应用程序,它动态生成 SQL 来搜索特定表的行(这是主域类,如 Employee)。
有三个表Table1、Table2和Table1Table2Map。Table1与Table2是多对多关系,通过Table1Table2Map表进行映射。但由于 Table1 是我的主表,因此关系实际上是一对多。
我的应用程序生成一个 sql,它基本上给出了一个包含所有这些表中的行的结果集。 select 子句和连接不会改变,而 where 子句是根据用户交互生成的。无论如何,我不希望结果集中出现重复的 Table1 行,因为它是结果显示的主表。现在生成的查询如下所示:
select distinct Table1.Id as Id, Table1.Name, Table2.Description from Table1
left outer join Table1Table2Map on (Table1Table2Map.Table1Id = Table1.Id)
left outer join Table2 on (Table2.Id = Table1Table2Map.Table2Id)
为了简单起见,我排除了 where 子句。问题是,当 Table2 中存在 Table1 的多行时,即使我已经说过与 Table1.Id 不同,结果集也具有 Table1 的重复行,因为它必须选择 Table2 中的所有匹配行。
为了详细说明,请考虑对于 Table1 中 Id = 1 的行,Table1Table2Map (1, 1) 和 (1, 2) 中有两行将 Table1 映射到 Table2 中 id 为 1, 2 的两行。对于这种情况,提到的查询返回重复的行。现在我希望查询仅返回一次 Id 为 1 的 Table1 行。这是因为 Table2 中只有一行类似于 Table1 中相应条目的事件值(此信息位于映射表中)。有没有办法避免获得 Table1 的重复行。
我认为我尝试解决问题的方式存在一些基本问题,但我无法找出它是什么。提前致谢。
最佳答案
尝试:
left outer join (select distinct YOUR_COLUMNS_HERE ...) SUBQUERY_ALIAS on ...
换句话说,不要直接联接表,而是联接限制您联接的行的子查询。
关于sql - 从左外连接获取不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788984/
我知道除了知道什么是“最喜欢的编程卡通”之外,stackoverflow 会对我有所帮助:P 这是接受的答案: Bill Karwin 感谢大家的帮助(我想给你们加倍投票) 我的查询结果是这样的(这是
我查询了此查询,该查询将相关图像返回到评论 return $comments = \DB::table('comments')->select('comments.comment','com
如果没有任何地址(内部连接),我有以下 LINQ 返回零。我如何将其设为 Outer Join 然后仅 Take(1)? var results = query.Join(
我是一名优秀的程序员,十分优秀!