我有5张桌子:
用户,项目,Dg,Ds和R。
项目有3种隐私模式:私人,公共,项目
我需要的是:
这些关系是:
1个n用户项目
1 n Dg项目
1 n用户Dg
1 n Dg Ds
1 n Ds R
它们可以是多个查询,也可以只是一个。如果有人会提供帮助或提供一些可以帮助的资源,我将不胜感激。我看过其他类似的问题,但是我是这个主题的新手,无法推断。
答案 0 :(得分:0)
from sqlalchemy.orm import aliased
Dg2 = aliased(Dg)
# project-wide visible R
result1 = db.session.query(
R, Ds.name).join(
Ds).join(
Dg).join(
Project).filter(
Project.acces_rights == 'project').join(
Dg2).filter(
Dg2.user_id == user_id)
# personal R
result2 = db.session.query(
R, Ds.name).join(
Ds).join(
Dg).filter(
Dg.user_id == user_id).join(
Project).filter(
Project.acces_rights == 'own'
)
# all publicly visible reading points
result3 = db.session.query(
R, Ds.name).join(
Ds).join(
Dg).join(
Project).filter(
Project.acces_rights == 'public')
results = result1.union(result2).union(result3)