如何仅显示具有特定于SQL中的id的所有选定值集的ID

时间:2017-09-26 20:42:51

标签: sql sqlite relational-division

有桌子:

PRODUCT
|id
|name
|city

PART
|id
|name
|color
|weight
|city

SUPLIER
|id
|name
|rating
|city

SUPLIES
|sup_id
|part_id
|prod_id
|amount

Ex:显示产品的ID和名称,供应商(1)从该供应商提供的所有部件提供每种部件类型的多个部件。 (练习是从另一种语言翻译而来)。

供应商1提供了一些零件:

SELECT DISTINCT part_id FROM supplies JOIN parts ON part_id=parts.id WHERE sup_id=1;

让我们说它们是:1,2,4,6;

供应商1也提供这些产品:

SELECT DISTINCT products.name FROM supplies JOIN products ON
sup_id=products.id WHERE sup_id=1;

假设他们是1,3,9; 然后我只需要显示那些使用了所有提供的零件类型的产品(id = in(1,3,9))(换句话说,所有id = in(1,2,4,6)的零件)。 因此,如果对于id = 1的产品,仅使用某些部件(例如id = 2和4的部件),则不得显示。当然,如果我理解运动正确。

严格来说,这就是我不知道如何写作。

编辑: 提供一些细节有一些例子:

Supplier Part Product Amount
1        1    1       200
1        1    3       300
1        1    9       400
1        2    1       500
1        2    3       100
1        2    9       700
1        4    1       200
1        4    3       800
1        6    1       100

如上所述,必须只显示一个产品ID:它是1,因为它使用了所有提供的零件类型(1,2,4,6);

如果我们再添加一条这样的记录:

1        6    3       100

然后将输出更改为1和3.因为两者都使用1,2,4和6部分。

如果我们再添加一条记录:

1        5    9       1100

然后我们将有空输出。因为没有人使用所有部件(1,2,4,5,6)。

希望这能澄清一些事情。

0 个答案:

没有答案