我有三个表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
)
答案 0 :(得分:0)
如果您正在寻找具有count = max count
的所有Prim_id您可以选择加入计数的最大值,例如:
Select COUNT(DISTINCT category) as count, Prim_ID
From Product
FULL JOIN (
Select COUNT(DISTINCT category) as count, Prim_ID
From Product
Group by Prim_ID
Order by count DESC
Limit 1
) t
Group by Prim_ID
having count = t.count