【问题标题】:selecting columns with tables created using double quotation fail选择使用双引号创建的表的列失败
【发布时间】: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 表的idprofile_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


【解决方案1】:

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

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

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

SELECT id, profile_name, production_run_id 
FROM ... 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多