首页 > 解决方案 > 如何理解四表连接查询

问题描述

我的问题基于来自以下链接的 asemprini87 的回答:How to Join 4 tables in SQL。(如果您有兴趣,请通过此链接查看原始表格)。

我的问题集中在:如何理解最后一个连接,以及为什么语法是正确的:两个表(p,pe)在最后一个条件下连接,与基础表(f)无关?

因为我也面临同样的问题:有4个表,但没有一个表与其他三个相关,我从那个链接找到答案,答案是正确的,但我不明白为什么它可以这样链接。

SELECT 
    f.nomeFornecedor, 
    e.idEncomenda, 
    p.nomeProduto,
    pe.quantidade
FROM 
    Fornecedor as f
INNER JOIN 
    Encomenda AS e ON f.idFornecedor = e.idFornededor 
INNER JOIN 
    Produto_Encomenda as pe ON e.idEncomenda = pe.idEncomenda
INNER JOIN 
    Produto as p ON p.idProduto = pe.idProduto

谢谢你。

标签: sqljoin

解决方案


进行多个连接时,并非所有表都需要与单个表相关,只需要将每个附加表链接到先前表之一的关系链即可。

让我们看一个更简单的例子,我们有 4 个表:A、B、C 和 D。

  • A与B有关
  • B与C有关
  • C与D有关

因此,表 C 和 D 与 A 没有直接关系,但通过关系链,我们可以在所有表​​中找到正确的行,过程如下:

  1. 从表 A 中获取一组行
  2. 将 A 和 B 之间的关系用于表 B 中的相关行
  3. 使用 B 和 C 的关系查找表 C 中的相关行
  4. 利用 C 和 D 的关系查找表 D 中的相关行

推荐阅读