选择包含使用双引号创建的表的列失败

selecting columns with tables created using double quotation fail

我将 postgresql 数据库连接到 Apache Superset 并正在使用他们的 SQL 编辑器。我 运行 遇到了一个问题,我无法在具有关联 ID 的两个 table 之间进行左连接。

SELECT id, profile_name FROM "ProductionRun"
LEFT JOIN "StatsAssociation" ON "ProductionRun".id = "StatsAssociation".production_run_id;

我上面的语法正确吗? table 必须用双引号引用,因为它们是区分大小写的。这 returns 只有 ProductionRun table 的 idprofile_name 列没有加入 StatsAssociation table.

我使用 sqlalchemy 创建了 tables,这里是 table 模式:

生产运行

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')

当我查看 table 时,它们都存在并且 StatsAssociationproduction_run_id 列,它与 ProductionRun.

共享相同的 ID

这最初是作为评论发布的。

您没有指定“StatsAssociation”table 中的任何列,因此预计不会显示任何内容。要在 SELECT 查询的输出中获取列,您需要列出它们——我目前能想到的唯一例外是,如果您在 [=22] 中使用 "TableName".** =].

例如,只是为了让您开始:

SELECT id, profile_name, production_run_id 
FROM ... 

其中 ... 是您查询的其余部分。