Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I do a self join in ORMLite

I'm trying to get all time entries for a specific foreman based on his supervisor's supervisor. However, I seem to be having trouble writing a self join query in ORMLite. See my data structure and code below.

public class User
{
    [AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }    
    [References(typeof(User))]
    public int SupervisorId { get; set; }
}
public class TimeSheet
{
    [AutoIncrement]
    public int Id { get; set; }       
    [References(typeof(User))]
    public int ForemanId { get; set; }
}

var query = db.From<TimeSheet>()
.Join<User>()
.Join<User, User>(); // not sure how to write this one.
// .Where(super => super.SupervisorId = 2)

I've created a sample gist to try and better show what I've attempted.

like image 280
mark Avatar asked Feb 20 '26 14:02

mark


1 Answers

var query = db.From<TimeSheet>()
   .Join<User>()
   .Join<User, User>((p, q) => p.Id == q.SupervisorId, db.JoinAlias("u2"));
like image 68
labilbe Avatar answered Feb 23 '26 03:02

labilbe