当一个表有多个表的外键时,如何在sql中获取数据

当一个表有多个表的外键时,如何在sql中获取数据,sql,database-design,join,Sql,Database Design,Join,我的数据库中有三个表,分别是供应商,材料,类别 在物料表中,它有一个供应商id作为外键,并且每个物料都与 三类。我使用category表的id保留了这些类别。所以在material表中有三个字段来保存类别的ID。表示物料表有三个类别表外键 现在我的问题是如何使用sql连接供应商和类别表从物料表中选择数据 您应该能够执行以下操作: SELECT ... FROM supplier JOIN materials ON supplier.supplier_id = ma

我的数据库中有三个表,分别是
供应商
材料
类别

在物料表中,它有一个
供应商id
作为外键,并且每个物料都与 三类。我使用category表的
id
保留了这些类别。所以在material表中有三个字段来保存类别的ID。表示物料表有三个类别表外键


现在我的问题是如何使用sql连接供应商和类别表从物料表中选择数据

您应该能够执行以下操作:

SELECT ...
FROM
    supplier
    JOIN materials ON
        supplier.supplier_id = materials.supplier_id
    JOIN categories ON (
        materials.category_id1 = categories.category_id
        OR materials.category_id2 = categories.category_id
        OR materials.category_id3 = categories.category_id
    )

但是你真的应该重新考虑你在
材料
类别
之间的联系方式。这看起来像一个常规的多对多关系,可以用这两个表之间的“连接”(也称为“链接”)表来表示。这将允许您对每种材料拥有无限的类别。

请将您的表定义发布为“创建表”语句,这将使A)使用更清晰,B)我们更容易开始帮助您。您是否也可以发布到目前为止您编写的任何查询,让我们知道您到底在做什么(并向我们展示您自己确实尝试过一些东西)。您可以多次加入同一个表(如果需要)每次在表达式上使用不同的
,并指定它们自己的
表别名
。请(至少)发布
示例数据
预期结果
。您使用的是哪种DBMS?博士后?神谕