python-使用sqlalchemy创建嵌套连接查询

50few1ms  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(259)

关于如何使用sqlalchemy进行嵌套联接,有什么想法吗?这是我试图重新创建的原始查询。

SELECT "tblLinkDivisions"."DivisionCoLinkID", 5 AS Score, "tblCompanies"."CompanyID"
FROM "tblS_AppliedStrategy"
INNER JOIN
(
  (
      "tblLinkIndustry" INNER JOIN "tblLinkDivisions" ON "tblLinkIndustry"."IndustryCoLinkID" = "tblLinkDivisions"."IndustryCoLinkID"
  )
  INNER JOIN "tblLinkAppliedStrategy"
  ON "tblLinkDivisions"."DivisionCoLinkID" = "tblLinkAppliedStrategy"."DivisionCoLinkID"
)
ON "tblS_AppliedStrategy"."AppStrategyCode" = "tblLinkAppliedStrategy"."AppStrategyCode"
INNER JOIN "tblCompanies" ON ("tblCompanies"."CompanyID" = "tblLinkIndustry"."CompanyID" AND "tblCompanies"."CompanyID" != %s)
WHERE "tblS_AppliedStrategy"."AppStrategyCode" IN %s

我尝试了几种不同的解决方案,这是最接近的结果:

companies = (
        session.query(tblLinkDivisions.DivisionCoLinkID, tblCompanies.CompanyID)
        .select_from(tblS_AppliedStrategy)
        .join(tblLinkIndustry, tblLinkDivisions.IndustryCoLinkID == tblLinkIndustry.IndustryCoLinkID)
        .join(tblLinkAppliedStrategy, tblLinkDivisions.DivisionCoLinkID == tblLinkAppliedStrategy.DivisionCoLinkID)
        .join(tblLinkAppliedStrategy, tblS_AppliedStrategy.AppStrategyCode == tblLinkAppliedStrategy.AppStrategyCode)
        .join(tblCompanies, and_(tblCompanies.CompanyID == tblLinkIndustry.CompanyID, tblCompanies.CompanyID != company_id))
        .filter(tblS_AppliedStrategy.AppStrategyCode.in_(strategy))
        .all()
    )

任何帮助或建议将不胜感激!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题