2017-11-12 4 views
0

Ich habe die folgenden Tabellen:Wie bekomme ich Spalten aus anderen Tabellen mit einem Fremdschlüssel?

CREATE TABLE "itemDetails" 
(
    id smallint, 
    name character varying(32) NOT NULL, 
    description character varying(255) NOT NULL, 
    PRIMARY KEY (id) 
) 

CREATE TABLE items 
(
    id int, 
    "detailsId" smallint REFERENCES "itemDetails" (id), 
    "ownerId" int, -- REFERENCES users (id), 
    "condition" int NOT NULL DEFAULT 100, 
    PRIMARY KEY (id) 
) 

Die itemDetails Tabelle speichert alle statischen Informationen eines Elements, während die items Tabelle speichert jede einzelne Instanz eines Elements, mit Säulen wie der condition und ownerId.

Wenn ich von einem Benutzer, indem Sie die folgenden Eigentümer alle Einzelteile zu erhalten, wo:

SELECT * FROM items WHERE "ownerId" = 5; 

Wie würde ich den Namen und die Beschreibung dieser im Besitz Elemente mit dem Fremdschlüssel?

Antwort

2

einen einfachen JOIN:

SELECT i.*, d.name, d.description 
FROM items i 
JOIN "itemDetails" d ON d.id = i."detailsId" 
WHERE "ownerId" = 5; 

Read the manual about the FROM clause here.

Abgesehen: Ich doppelten Anführungszeichen CAMEL-Fall Identifikatoren in Postgres zu vermeiden, würde Ihnen raten. Macht dein Leben leichter. Siehe:

+0

Es funktioniert! Und danke für den Tipp, ich werde mich darum kümmern. –

Verwandte Themen