【问题标题】:Internal SQL query内部 SQL 查询
【发布时间】:2016-06-06 02:06:42
【问题描述】:

我想通过 SQL 查询获取 PAYMENT_GATEWAY 名称。我用这个表:

CREATE TABLE PAYMENT_GATEWAY(
 ID SERIAL NOT NULL,
 NAME TEXT
)
;

ALTER TABLE PAYMENT_GATEWAY ADD CONSTRAINT KEY38 PRIMARY KEY (ID)
;

CREATE TABLE PAYMENT_GATEWAY_ACCOUNT(
 ID SERIAL NOT NULL,
 PAYMENT_GATEWAYT_ID INTEGER
)
;

CREATE INDEX IX_RELATIONSHIP18 ON PAYMENT_GATEWAY_ACCOUNT (PAYMENT_GATEWAYT_ID)
;

ALTER TABLE PAYMENT_GATEWAY_ACCOUNT ADD CONSTRAINT KEY39 PRIMARY KEY (ID)
;

选择查询

SELECT * FROM PAYMENT_GATEWAY_ACCOUNT

如您所见,我将 PAYMENT_GATEWAYT_ID 存储为数字。如何修改 SQL 查询以选择列 NAME 到 PAYMENT_GATEWAY 并显示名称字符串作为结果?

【问题讨论】:

    标签: sql postgresql postgresql-9.3 postgresql-9.4


    【解决方案1】:

    据我所知,您询问如何将这两个表连接在一起 - 澄清这是不正确的。

    SELECT
        pga.ID,
        pg.NAME
    FROM
        PAYMENT_GATEWAY_ACCOUNT pga
    INNER JOIN
        PAYMENT_GATEWAY pg
        ON (pg.ID = pga.PAYMENT_GATEWAYT_ID);
    

    上面将为您提供与PAYMENT_GATEWAY_ACCOUNT 中的ID 关联的NAME

    另一件需要注意的事情是,您应该考虑将FOREIGN KEY 引用添加到PAYMENT_GATEWAY_ACCOUNT 以保持引用完整性。

    CREATE TABLE PAYMENT_GATEWAY_ACCOUNT(
        ID SERIAL NOT NULL,
        PAYMENT_GATEWAYT_ID INTEGER REFERENCES PAYMENT_GATEWAY(ID)
    );
    

    来自文档: https://www.postgresql.org/docs/current/static/ddl-constraints.html#DDL-CONSTRAINTS-FK

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2017-07-22
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多