检索多个SQL子查询中的列

时间:2018-03-16 18:40:11

标签: postgresql subquery

我有一个简单的表层次结构,涉及4个表;

slices -> blocks -> ribbons -> glassplate

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

  1. “切片”是(生物)组织的切片。从一个切片,创建多个“块”。 blocks表有一个slice_id外键。
  2. 从一个区块构建多个“条带”。 Ribbons表有一个block_id外键。
  3. 将带状物放在条形码玻璃板(glassplate_id)上。 (通常只有一个功能区,但可能更多)。 Ribbon表有一个glassplate_id外键。
  4. 我正在尝试构建一个(postgres)查询,该查询将使用玻璃板条形码(即glassplate_id)检索有关色带,块和切片的相关信息。

    我当前的查询,使用glassplate 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
        )
    )
    

    从切片表中返回我需要的信息。

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

1 个答案:

答案 0 :(得分: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;