2016-06-05 3 views
0

Ich möchte PAYMENT_GATEWAY Name mit SQL-Abfrage erhalten. Ich benutze diese Tabellen:Interne SQL-Abfrage

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

Auswahlabfrage

SELECT * FROM PAYMENT_GATEWAY_ACCOUNT 

Wie Sie sehen, ich PAYMENT_GATEWAYT_ID als Nummer speichern. Wie kann ich die SQL-Abfrage ändern, um die Spalte NAME in PAYMENT_GATEWAY auszuwählen und den Namen String als Ergebnis anzuzeigen?

Antwort

1

Von was ich sagen kann, fragen Sie, wie diese beiden Tabellen zusammen zu verbinden - Klar ist, das ist nicht korrekt.

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

Die oben finden Sie die NAME erhalten, die mit dem ID in PAYMENT_GATEWAY_ACCOUNT

Eine andere Sache zu beachten ist, verbunden ist, dass Sie eine FOREIGN KEY Bezug auf PAYMENT_GATEWAY_ACCOUNT Zugabe in Betracht ziehen sollten referenzielle Integrität zu erhalten.

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

Aus der Dokumentation: https://www.postgresql.org/docs/current/static/ddl-constraints.html#DDL-CONSTRAINTS-FK