选择包含使用双引号创建的表的列失败
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 的 id
和 profile_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 时,它们都存在并且 StatsAssociation
有 production_run_id
列,它与 ProductionRun
.
共享相同的 ID
这最初是作为评论发布的。
您没有指定“StatsAssociation”table 中的任何列,因此预计不会显示任何内容。要在 SELECT 查询的输出中获取列,您需要列出它们——我目前能想到的唯一例外是,如果您在 [=22] 中使用 "TableName".*
或 *
=].
例如,只是为了让您开始:
SELECT id, profile_name, production_run_id
FROM ...
其中 ...
是您查询的其余部分。
我将 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 的 id
和 profile_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 时,它们都存在并且 StatsAssociation
有 production_run_id
列,它与 ProductionRun
.
这最初是作为评论发布的。
您没有指定“StatsAssociation”table 中的任何列,因此预计不会显示任何内容。要在 SELECT 查询的输出中获取列,您需要列出它们——我目前能想到的唯一例外是,如果您在 [=22] 中使用 "TableName".*
或 *
=].
例如,只是为了让您开始:
SELECT id, profile_name, production_run_id
FROM ...
其中 ...
是您查询的其余部分。