【发布时间】:2017-12-02 14:44:00
【问题描述】:
我有三个表 Product、Supplier 和 Secondary_Supplier。它们看起来像这样:
我需要做这个查询:
提供最多(不同)类别的供应商的名称是什么?” 注意:可以不止一个。还有每个产品作为主要供应商和至少一个二级供应商。
Supplier
|ID | name|
----------
|1 | John|
----------
|2 | Andrew|
----------
|3 | Mariah|
----------
|4 | Drew|
----------
二级供应商
|ID | ProdID|
----------
|4 | 121 |
----------
|1 | 122 |
----------
|2 | 123 |
----------
|2 | 125 |
----------
|3 | 124 |
----------
产品
|ProdID | Prim_ID | Category |
----------------------------
|121 | 2 | Tampons|
----------------------------
|122 | 3 | Soda|
----------------------------
|123 | 3 | Makeup|
----------------------------
|124 | 4 | Chicken|
----------------------------
|125 | 1 | Tampons|
----------------------------
在我运行查询后,它应该会给我这样的信息:
|name | COUNT|
-------------
|Mariah| 3|
-------------
问题是产品有一个主要供应商和至少一个二级供应商。因此,当我进行产品自然连接 Secondary_Supplier 时,我的新表有 2 行带有供应商 ID,我需要在这两行中进行搜索。
我试过这个:
Select COUNT(DISTINCT category) as count, Prim_ID
From Product
Group by Prim_ID
Order by count DESC
Limit 1;
但我只得到主要供应商 (Prim_ID)。另外,如果我有一个或多个,它只会显示其中一个(我认为这是因为limit 1)
【问题讨论】:
标签: sql postgresql