问题标签 [self-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - NHibernate 映射自联接表?
这可能很简单,但我想我错过了一些东西。我有一个自连接表Units
,每个单元都有一个主单元:
这样我就可以查询这样的内容:
该表units
映射到以下类:
用.hbm映射文件如下:
使用以下代码测试这些实体时:
我得到以下异常:
问题是实体的Main_Unit
属性Unit
正在引用自身,所以我在这里缺少什么??,以及如何编写诸如递归 SQL CTE 之类的东西来应用等级等,因为我对其他更复杂的自我也有同样的问题具有更复杂查询的连接表。
sql - Rails 中的 LEFT SELF JOIN - 基于线程的私人消息传递
我正在尝试在 Rails 中实现基于线程的一对一私人消息传递。
以下是我的消息模型:
我为任意两个用户之间的新对话创建了一个新线程。
我正在使用以下查询来查找给定用户的每个线程的最新未删除消息(例如:id = 1):
我想在我的 Rails 模型/控制器中实现它并在相应的视图上显示结果。
有人可以指导如何在一系列消息中获得这些结果吗?提前致谢!
mysql - 关于self join的sql问题
我对 MySQL 的 SQL 连接有疑问。
假设我有下表 A 和父子关系。如何在给定父 id 的情况下获取所有子节点(包括子节点的子节点直到叶节点)?
从上表中,如果我们给定父级 (1),我必须查询给定父级 id(1),它给出了所有层次结构示例:
限制之一是我无法更改数据模型,因为数据模型是 JBPM 数据库表(开源)我正在为子流程的 JBPM 图中的 ProcessInstancelog 表添加一些功能(对于每个扇出流程)。
postgresql - postgis 高级 (?) 选择查询
问题:我需要为我表中的每座建筑物选择在 1 公里半径内至少有 2 个药店和 2 个教育中心的所有 POI(药房、商业中心、医疗中心、教育中心、警察局、消防局) 距离相关建筑物 1 公里以内。表结构->
建筑物(id 序列号,名称 varchar )
poi_category(id serial, cname varchar) --cname 当然是类别名称
poi(id serial, name varchar, c_id integer)-- c_id 是引用 poi_category(id) 的 FK
所有坐标列都是几何类型而不是地理类型(我们称它们为 geom)
这是我认为应该这样做的方式,但我不确定它是否正确,更不用说这个问题的最佳解决方案了
这是我需要的方法吗?从性能的角度来看,哪种解决方案会更好?最优雅的解决方案呢?我也在这里发布过:http://gis.stackexchange.com/questions/11445/postgis-advanced-selection-query
sql - 如何在自联接表中映射列!
我有一个父/子表,想将其 PK 和 FK 更新为新值。问题是 oldParent Ids 应该与与旧 Ids 匹配的新 Ids 同步。所以:
我将此数据作为临时表:
我需要更新 NewParentID 如下:
mysql - mysql比较同一张表中的列
我在 mysql 数据库中有一个表
我试图弄清楚如何选择这样我可以比较每天吃多少并放入电子表格中,所以我得到
mysql - 使用 MySQL 选择类似于 Amazon 的 SimpleDB 的属性
抱歉,我想不出更好的方法来命名这个。在 Amazon 的 SimpleDB 中,一个项目可以在同一列中有多个值,因此可以只选择那些具有所有正在寻找的属性的项目。
在 MySQL 中,假设下表(“Photo_Attributes”)包含无限数量的照片属性,这些属性包含在另一个表(“Photos”)中,并且这两个表由 Item_Number 连接。
并且,假设我想找到一顶颜色为红色且尺寸为中号的帽子,在本例中为 ITEM_ID "ABC" 而不是 "OPQ"。
以下查询不会产生任何结果,因为每一行仅包含一个属性和一个值。
SELECT FROM Photo_Attributes WHERE OBJECT='hat' AND (Attribute='Color" AND Value='Red") AND (Attribute='Size' AND Value='Med');
而且,这个查询会产生比它应该产生的更多的行(即,所有红色和所有中等大小的项目)。
SELECT FROM Photo_Attributes WHERE OBJECT='hat' AND (Attribute='Color" AND Value='Red") OR (Attribute='Size' AND Value='Med');
写这个的最好方法是什么 - 有没有办法在 SELECT 语句中不使用 JOIN ?我想知道后者,因为查询将以编程方式生成(在 nodejs 中),并且属性值对的数量可以从一个到几个不等。我想我也可以使用嵌套查询,从记录集中剔除,但这似乎同样低效。
php - 如何输出使用别名的 MySQL 查询的结果?
我有两个主要的 MySQL 表(配置文件和联系人)和许多补充表(以 prm_ 为前缀)。它们是通过 PHP 访问和操作的。
在本例中,我正在查询配置文件表,我将在其中检索所有者 ID 和饲养者 ID。然后,这将在保存所有者和饲养者信息的联系人表中进行引用。
我在另一个关于连接和别名的问题上得到了很大的帮助,在那里我还获得了以下查询。不幸的是,我在实际回应结果时遇到了巨大的困难。每个处理自连接和别名的站点都提供了很好的查询示例——然后跳到“和这个输出等等等等”。怎么输出???
再加上以下 PHP:
除了联系人(性别、颜色等)之外的所有细节都可以返回。和变量为空$owner
。$breeder
为我解决这个问题的任何帮助将不胜感激。
编辑:我最后的工作查询:
然后我可以通过以下方式输出:
非常感谢大家!
sql-server-2005 - 带有自连接的 sql 查询
给定一个包含以下数据的表(TableA);
我如何返回状态为 2 的所有记录,除了具有给定 RecordId 的记录,其中状态为 2 后跟记录 1 在以后的日期(并且没有其他状态为 2 的记录。
例如,查询应返回 REC002 和 REC003,因为 REC001 过去的状态为 2,但后来被状态为 1 的记录 ID 4 取代。如果在稍后的某个时间点为 REC001 添加了另一条状态为 2 的记录,那么这应该再次出现在结果集中(假设没有后来的状态为 1 的记录)。
我试图解决这个问题的微弱尝试是;
这有点工作,但返回 t1.Id = t2.Id 的值。我知道我可以通过 where 子句排除它,但是如果我向表中添加更多记录,它会再次失败。例如;
任何想法表示赞赏。
编辑:我尝试了给出的两个答案,虽然都没有给我我需要的东西,但它们确实为我指明了正确的方向。使用给出的答案,我想出了以下似乎可以满足我要求的方法;
我可以在这里看到的唯一缺点是,如果有两条时间戳完全相同的记录,那么它将在结果集中出现两次。例如,如果 Id 21 被复制为 22,那么它将出现两次。这不是一个真正的问题,因为在现实中,时间戳总是唯一的。
sql - 慢速自连接删除查询
它比这个查询更简单吗?
是的,显然确实如此......因为当matches
表非常大时,上述查询的性能非常糟糕。
matches
大约有 2.2 亿条记录。我希望这个 DELETE 查询将大小减少到大约 15,000 条记录。如何提高查询的性能?我在两列都有索引。UID 和 MatchedUID 是这个 InnoDB 表中仅有的两列,两者都是无符号的 INT(10) 类型。该查询在我的笔记本电脑(i7 处理器)上运行了 14 多个小时。