如果我有三个表,比如:
供应商(sID:integer,sName:varchar,description:varchar(;以sID作为主要密钥
+-----+-----------+-------------+
| sID | SName | description |
+-----+-----------+-------------+
| 1 | Supplier1 | Desc1 |
| 2 | Supplier2 | Desc2 |
| 3 | Supplier3 | Desc3 |
| 4 | Supplier4 | Desc4 |
| ... | ... | ... |
+-----+-----------+-------------+
产品(pID:integer,pName:varchar,size:varchar(;以pID作为主要密钥
+-----+----------+------+
| pID | pName | size |
+-----+----------+------+
| 1 | Product1 | S |
| 2 | Product2 | M |
| 3 | Product3 | B |
| 4 | Product4 | M |
| ... | ... | ... |
+-----+----------+------+
菜单(sID:integer,pID:integer,cost:varchar(;使用sID和pID作为外键
+-----+-----+------+
| sID | pId | cost |
+-----+-----+------+
| 1 | 4 | 10 |
| 2 | 16 | 20 |
| 8 | 1 | 5 |
| 8 | 2 | 8 |
| ... | ... | ... |
+-----+-----+------+
供应商和产品之间的唯一关系由菜单表给出。
如何选择提供所有产品的所有供应商的名称?
谢谢你的帮助!
以下是获取id的方法。简单汇总和计数:
select m.sid
from menu m
group by m.sid
having count(distinct pid) = (select count(*) from products);
我将让您获得供应商名称,您可以使用in
、exists
、join
,甚至是相关的子查询来完成此操作。