我有以下表格:
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)
)
itemDetails
表存储项目的所有静态信息,而 items
表存储项目的每个单独实例,其中包含诸如 condition 之类的列
和 ownerId
。
如果我通过执行以下操作从何处获取用户拥有的所有项目:
SELECT * FROM items WHERE "ownerId" = 5;
我如何使用外键获取那些拥有的项目的名称和描述?
最佳答案
使用普通连接:
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.
旁白:避免在 Postgres 中使用双引号 CaMeL 大小写标识符。让您的生活更轻松。见:
关于sql - 如何使用外键从其他表中获取列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47254946/