sql - 如何使用外键从其他表中获取列?

标签 sql postgresql join foreign-keys

我有以下表格:

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/

相关文章:

php - SQL 不向数据库中插入信息

PHP 影响行返回 0 但查询执行

c++ - Postgresql - 从 SELECT 中排除一些结果

SQL 聚合唯一对

mysql - mysql 中联接的替代方案

r - 根据R中目标值的下限和上限连接两个数据帧

sql - 使用 JOIN 和 RANK() 进行查询的性能问题

sql - 如何获取距离当前时间 30 秒创建或更新的数据 PostgreSQL

postgresql - 在 Postgres 中使用 DELETE 的返回值进行 UPDATE

mysql - #1221 - UPDATE 和 ORDER BY 的使用不正确