可能重复:
sql:self-joins解释
什么是自我加入,你什么时候使用它?我不明白自我加入,所以一个例子的外行解释会很棒.
在SQL Server中执行递归自联接的最简单方法是什么?我有这样一张桌子:
PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
5 YT NULL
6 IS 5
Run Code Online (Sandbox Code Playgroud)
而且我希望能够获得仅与特定人员开始的层次结构相关的记录.所以,如果我通过PersonID = 1请求CJ的层次结构,我会得到:
PersonID | Initials | ParentID
1 CJ NULL
2 EB 1
3 MB 1
4 SW 2
Run Code Online (Sandbox Code Playgroud)
对于EB,我会得到:
PersonID | Initials | ParentID
2 EB 1
4 SW 2
Run Code Online (Sandbox Code Playgroud)
我有点卡住这个可以想不出怎么做除了基于一堆连接的固定深度响应.这会发生,因为我们不会有很多级别,但我想做得恰到好处.
谢谢!克里斯.
我试图从同一个表中获取一些行.这是一个用户表:用户有user_id和user_parent_id.
我需要得到user_id行和user_parent_id行.我编写了这样的代码:
SELECT user.user_fname, user.user_lname
FROM users as user
INNER JOIN users AS parent
ON parent.user_parent_id = user.user_id
WHERE user.user_id = $_GET[id]
Run Code Online (Sandbox Code Playgroud)
但它没有显示结果.我想显示用户记录及其父记录.
我正在使用EclipseLink 2.3.1使用JPA 2为自引用表建模.在创建EntityManager时,我从EclipseLink获得了奇怪的警告.
[EL Warning]: 2011-11-27 14:28:00.91--ServerSession(8573456)--Reverting the lazy setting on the OneToOne or ManyToOne attribute [redirectID] for the entity class [class lp.db.model.Site] since weaving was not enabled or did not occur.
Run Code Online (Sandbox Code Playgroud)
我找不到有关此警告的任何文档,我不确定它的含义.我也想知道如何解决导致此警告出现的问题......
我是JPA的新手,所以这可能是个愚蠢的事情.我的程序非常简单.这是实体定义:
@Entity
@Table(name="site")
public class Site implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="site_id")
public String siteID;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="redirect_id", referencedColumnName="site_id")
public Site redirectID;
@Column(name="name")
public String name;
}
Run Code Online (Sandbox Code Playgroud)
这是persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="lpdb2" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>lp.db.model.Site</class> …Run Code Online (Sandbox Code Playgroud) 我有一个用户可以收集他喜欢的用户...
另一个用户可以收集他喜欢的用户....
如果用户A喜欢用户B,并且用户B喜欢用户A,那么他们就会挂出.我需要向对方发送他们的联系信息.我们如何在Entity Framework Code First中代表这样的模型?
public class User
{
public int UserId { get; set; }
public int? UserLikeId { get; set; }
public virtual UserLike UserLike { get; set; }
}
public class UserLike
{
public int UserLikeId { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
public virtual ICollection<User> LikeUsers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这个型号是否正确?我不能让这个工作.
我尝试过另一种方式,但这也不行...
我试图将用户集合添加到用户表.
例如:
public virtual ICollection<User> userlike { get; set; } …Run Code Online (Sandbox Code Playgroud) entity-framework self-join self-reference ef-code-first entity-framework-4.1
如果我有一个我想要交叉连接的表,我该如何删除重复的行?换句话说,我怎么能做一个"订单无所谓"交叉加入?
所以例如,如果我有一个表T:
field |
-------
A |
B |
C |
Run Code Online (Sandbox Code Playgroud)
我交叉加入自己,所以我没有得到A | 一排
T as t1
cross join
T as t2
on t1.field != t2.field
Run Code Online (Sandbox Code Playgroud)
我会得到以下内容:
field | field
------+-------
A | B
A | C
B | A
B | C
C | A
C | B
Run Code Online (Sandbox Code Playgroud)
但是,对我来说A,B与B,A相同.
有没有一个很好的方法来删除这些重复?换句话说,我希望组合而不是排列.
我正在尝试使用data.table通过一组三个变量获得最高行.
我有一个有效的解决方案:
col1 <- c(1,1,1,1,2,2,2,2,3,3,3,3)
col2 <- c(2000,2000,2001,2001,2000,2000,2001,2001,2000,2000,2001,2001)
col4 <- c(1,2,3,4,5,6,7,8,9,10,11,12)
data <- data.frame(store=col1,year=col2,month=12,sales=col4)
solution1 <- data.table(data)[,.SD[1,],by="store,year,month"]
Run Code Online (Sandbox Code Playgroud)
我使用Matthew Dowle在以下链接中建议的较慢方法:
我正在尝试实现更快的自联接但无法使其工作.
有没有人有什么建议?
所以,我正在开发一个应用程序,我希望用户能够在"文件夹"中对对象进行分组.基本上:
User has_many :foos
Foos不必在文件夹中,但它们可以.在这种情况下:
Folder has_many :foos 和 Foo belongs_to :folder
现在,我希望能够设置文件夹,以便它们可以嵌套.我觉得这就像......
Folder has_many :folders
我听说这种自我指涉关系没什么大不了的,但我真的不知道它是如何运作的.我无法弄清楚应该如何在模型中声明这个以及我需要在数据库中提供哪些列.
有人可以提供一个例子吗?我还重视您在应用程序中建立此类关系时可能提供的任何建议/提醒/警告/经验教训.
谢谢!
我想创建一个包含Users许多friends类的结构User:
class User < ActiveRecord::Base
has_and_belongs_to_many :friends, class_name: "User"
end
Run Code Online (Sandbox Code Playgroud)
我不需要他们关系的任何细节,因此我不会使用:through某种类Friendship.但现在我找不到任何方法来创建相应的数据库(既不使用迁移文件也不使用rails g model User username:string ...命令).有任何想法吗?
self-join ×10
sql ×5
activerecord ×1
cross-join ×1
data.table ×1
eclipselink ×1
join ×1
jpa ×1
model ×1
mysql ×1
r ×1
recursion ×1
sql-server ×1