Mysql select具有多个表和多个外键



如果我有三个表,比如:

供应商(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);

我将让您获得供应商名称,您可以使用inexistsjoin,甚至是相关的子查询来完成此操作。

相关内容

  • 没有找到相关文章

最新更新