有桌子:
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)。
希望这能澄清一些事情。