【发布时间】:2021-07-27 09:04:49
【问题描述】:
我将一个 postgresql 数据库连接到 Apache Superset,并且正在使用他们的 SQL 编辑器。我遇到了一个问题,我无法在具有关联 ID 的两个表之间进行左连接。
SELECT id, profile_name FROM "ProductionRun"
LEFT JOIN "StatsAssociation" ON "ProductionRun".id = "StatsAssociation".production_run_id;
我上面的语法正确吗?这些表必须用双引号引用,因为它们区分大小写。这仅返回ProductionRun 表的id 和profile_name 列,而不与StatsAssociation 表连接。
我使用 sqlalchemy 创建了表,这里是表架构:
生产运行
class ProductionRun(Base):
__tablename__ = 'ProductionRun'
id = Column(Integer, primary_key=True, autoincrement=True)
profile_name = Column(String, nullable=False)
统计协会
class StatsAssociation(Base):
__tablename__ = 'StatsAssociation'
production_run_id = Column(Integer, ForeignKey('ProductionRun.id'), primary_key=True)
stats_package_id = Column(Integer, ForeignKey('StatsPackage.id'), unique=True, nullable=False)
stats_package = relationship('StatsPackage', back_populates='stats_association', cascade='all,delete')
production_run = relationship('ProductionRun', back_populates='stats_association')
当我查看这些表时,它们都存在并且StatsAssociation 具有与ProductionRun 共享相同ID 的production_run_id 列。
【问题讨论】:
-
您没有指定“StatsAssociation”表中的任何列,因此预计不会显示任何内容。要在 SELECT 查询的输出中获取列,您需要列出它们。例如,让您开始:
SELECT id, profile_name, production_run_id FROM ...其中...是您查询的其余部分。 -
你能把 ^ 改成答案吗?我是 SQL 新手,所以这并不像看起来那么明显。
-
没问题,不用担心。我们曾经都是新人:)
标签: python sql sqlalchemy apache-superset