我正在尝试查询属于我系统中特定用户的所有联赛。
数据设置如下所示:
has_many :users_leagues, Statcasters.UsersLeagues
has_many :leagues, through: [:users_leagues, :league]
所以你可以看到,我有一个关于用户和联盟的has_many。
我正在尝试获取用户附加到其上的所有联赛的列表。
在rails中,它看起来像这样:user.leagues
并且会加载所有附加了当前用户ID的联盟。
我如何用Ecto,Elixir和Phoenix做到这一点?
答案 0 :(得分:4)
您可以使用user
将Repo.preload
预加载到user = user |> Repo.preload([:leagues])
# user.leagues is now a list of leagues
:
assoc
或使用Repo.all
和leagues = Ecto.assoc(user, :leagues) |> Repo.all
获取用户的联赛列表:
select t.*, ca.num_visit
from table1 as t
cross apply (
select count(*) num_visit
from table1 as c
where c.id = t.id
and c.DATETIME > t.DATETIME
and c.DATETIME <= dateadd(minute,5,t.DATETIME)
) ca
where num_visit >= 2