SQL编写:查询使用过所有供应了零件的供应商都供应了零件的工程项目信息
时间: 2024-03-08 08:45:11 浏览: 263
可以使用以下 SQL 语句来查询使用过所有供应了零件的供应商都供应了零件的工程项目信息:
```
SELECT DISTINCT p.proj_id, p.proj_name
FROM projects p
JOIN supplies s ON p.proj_id = s.proj_id
JOIN parts pa ON s.part_id = pa.part_id
WHERE NOT EXISTS (
SELECT *
FROM suppliers su
WHERE NOT EXISTS (
SELECT *
FROM supplies s2
WHERE s2.sup_id = su.sup_id AND s2.part_id = pa.part_id
)
)
```
该 SQL 语句使用了三个表:projects、supplies 和 parts。首先,我们通过 JOIN 连接三个表,然后使用子查询来检查是否存在任何供应商没有提供所有需要的零件。如果不存在这样的供应商,那么该工程项目就会被包括在结果集中。最终的结果集会返回所有使用了所有供应了零件的供应商的工程项目的 ID 和名称。
相关问题
使用sql语句编写程序:有工程信息j表,零件信息s表,工程project表,求使用了北京供应商供应的蓝色零件的工程号。使用嵌套查询,输出结果工程号既要求唯一,也要求排序
可以使用以下SQL语句来实现:
```
SELECT DISTINCT p.project_no
FROM project p
WHERE p.project_no IN
(SELECT j.project_no
FROM j, s
WHERE j.part_no = s.part_no AND s.color = '蓝色' AND s.supplier = '北京')
ORDER BY p.project_no;
```
首先,在嵌套查询中,我们从j表和s表中选择所有颜色为蓝色并且供应商为北京的零件,并将它们的工程号作为子查询的结果。
接下来,我们在主查询中使用IN运算符来筛选出所有使用了这些零件的工程号。由于我们只需要工程号唯一并且排序,因此我们在主查询中使用DISTINCT关键字去重并使用ORDER BY对结果进行排序。
希望这可以帮助到你!
如何编写SQL查询,使用WITH ROLLUP和COALESCE函数来汇总供应商供应零件的数量,并包括所有供应商供应所有零件的总数?请提供示例。
在数据库查询中,为了能够得到每个供应商对每种零件的供应量总计,以及所有供应商供应所有零件的总数,你可以使用WITH ROLLUP和COALESCE这两个函数来实现。WITH ROLLUP可以用来生成一个包含分组聚合的小计和总计的额外行,而COALESCE函数则用于处理空值,确保输出结果中使用特定的默认值替代NULL。
参考资源链接:[sql-显示供应商供应零件的汇总列表(with rollup+coalesce)](https://wenku.csdn.net/doc/64534aeffcc5391368043311?spm=1055.2569.3001.10343)
下面是一个具体的SQL查询示例,它将会返回每个供应商供应每种零件的数量合计,每个供应商供应所有零件的数量合计,以及所有供应商供应的所有零件数量合计:
```sql
SELECT
COALESCE(s.sno, '总计') AS 供应商,
COALESCE(p.pno, '总计') AS 零件,
SUM(j quantity) AS 总供应量
FROM
spj.s AS s
JOIN
spj.spj AS j ON s.sno = j.sno
JOIN
spj.p AS p ON j.pno = p.pno
GROUP BY
ROLLUP(s.sno, p.pno);
```
在这个查询中,我们首先从`spj.s`表中选择供应商编号(sno),从`spj.p`表中选择零件编号(pno),并且从`spj.spj`表中选择供应量(quantity)。我们使用JOIN来关联这些表,并通过`GROUP BY ROLLUP(s.sno, p.pno)`对结果进行分组,生成分组的小计和总计行。COALESCE函数被用来在结果中替换NULL值为'总计',使得输出更加人性化。
为了更好地理解这个查询的工作原理,建议阅读相关资料《sql-显示供应商供应零件的汇总列表(with rollup+coalesce)》,其中详细介绍了数据表结构、分析了查询逻辑,并提供了代码运行结果。这个资源将帮助你深入理解WITH ROLLUP和COALESCE的使用,以及如何在实际情况下构建汇总列表查询。
参考资源链接:[sql-显示供应商供应零件的汇总列表(with rollup+coalesce)](https://wenku.csdn.net/doc/64534aeffcc5391368043311?spm=1055.2569.3001.10343)
阅读全文