【问题标题】:Retrieve columns in a multiple SQL subquery检索多 SQL 子查询中的列
【发布时间】:2018-03-16 18:40:11
【问题描述】:

我有一个包含 4 个表的简单表层次结构;

slices -> blocks -> ribbons -> glassplate

关于上述语义的一些逻辑:

  1. “切片”是(生物)组织的切片。从一个切片创建多个“块”。 blocks 表有一个 slice_id 外键。
  2. 从一个块构建多个“丝带”。 Ribbons 表有一个 block_id 外键。
  3. 色带放置在带条形码的玻璃板上 (glassplate_id)。 (通常只有一根丝带,但可能更多)。 Ribbons 表有一个 glassplate_id 外键。

我正在尝试构建一个 (postgres) 查询,该查询将使用 glassplates 条形码(即 glassplate_id)检索有关色带、块和切片的相关信息。

我当前的查询,使用玻璃板 ID = '163'

SELECT * from slices WHERE slices.id IN 
(
    SELECT blocks.slice_id FROM blocks WHERE blocks.id IN 
    ( 
        SELECT block_id FROM ribbons WHERE glassplate_id = 163
    )
)

请从 slices 表中返回我需要的信息。

问题是;如何在同一个查询中检索blocks 和ribbons 表中的相关字段?这些表中的相关列将是我选择的列。

【问题讨论】:

    标签: postgresql subquery


    【解决方案1】:

    了解JOINS

    SELECT
        *
    FROM
        slices
        JOIN blocks
        ON (slices.id = blocks.slice_id)
        JOIN ribbons
        ON (blocks.id = ribbons.block_id)
    WHERE
        ribbons.glassplate_id = 163;
    

    【讨论】:

    • 完美运行!将检查 JOIN 逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多